/* @preserve
    Copyright (c) 2005-2016, Mendix bv. All rights reserved.
    See mxclientsystem/licenses.txt for third party licenses that apply.
*/

/*
	Essential styles that themes can inherit.
	In other words, works but doesn't look great.
*/

@mixin mxui() {
    /****
		GENERIC PIECES
 ****/

    .dijitReset {
        /* Use this style to null out padding, margin, border in your template elements
		so that page specific styles don't break them.
		- Use in all TABLE, TR and TD tags.
	*/
        margin: 0;
        border: 0;
        padding: 0;
        font: inherit;
        line-height: normal;
        color: inherit;
    }
    .dj_a11y .dijitReset {
        -moz-appearance: none; /* remove predefined high-contrast styling in Firefox */
    }

    .dijitInline {
        /*  To inline block elements.
		Similar to InlineBox below, but this has fewer side-effects in Moz.
		Also, apparently works on a DIV as well as a FIELDSET.
	*/
        display: inline-block; /* webkit and FF3 */
        border: 0;
        padding: 0;
        vertical-align: middle;
    }

    table.dijitInline {
        /* To inline tables with a given width set */
        display: inline-table;
        box-sizing: content-box;
    }

    .dijitHidden {
        /* To hide unselected panes in StackContainer etc. */
        position: absolute; /* remove from normal document flow to simulate display: none */
        visibility: hidden; /* hide element from view, but don't break scrolling, see #18612 */
    }
    .dijitHidden * {
        visibility: hidden !important; /* hide visibility:visible descendants of class=dijitHidden nodes, see #18799 */
    }

    .dijitVisible {
        /* To show selected pane in StackContainer etc. */
        display: block !important; /* override user's display:none setting via style setting or indirectly via class */
        position: relative; /* to support setting width/height, see #2033 */
        visibility: visible;
    }

    .dj_ie6 .dijitComboBox .dijitInputContainer,
    .dijitInputContainer {
        /* for positioning of placeHolder */
        overflow: hidden;
        float: none !important; /* needed to squeeze the INPUT in */
        position: relative;
    }
    .dj_ie7 .dijitInputContainer {
        float: left !important; /* needed by IE to squeeze the INPUT in */
        clear: left;
        display: inline-block !important; /* to fix wrong text alignment in textdir=rtl text box */
    }

    .dj_ie .dijitSelect input,
    .dj_ie input.dijitTextBox,
    .dj_ie .dijitTextBox input {
        font-size: 100%;
    }
    .dijitSelect .dijitButtonText {
        float: left;
        vertical-align: top;
    }
    table.dijitSelect {
        padding: 0 !important; /* messes up border alignment */
        border-collapse: separate; /* so jsfiddle works with Normalized CSS checked */
    }
    .dijitTextBox .dijitSpinnerButtonContainer,
    .dijitTextBox .dijitArrowButtonContainer,
    .dijitValidationTextBox .dijitValidationContainer {
        float: right;
        text-align: center;
    }
    .dijitSelect input.dijitInputField,
    .dijitTextBox input.dijitInputField {
        /* override unreasonable user styling of buttons and icons */
        padding-left: 0 !important;
        padding-right: 0 !important;
    }
    .dijitValidationTextBox .dijitValidationContainer {
        display: none;
    }

    .dijitTeeny {
        font-size: 1px;
        line-height: 1px;
    }

    .dijitOffScreen {
        /* these class attributes should supersede any inline positioning style */
        position: absolute !important;
        left: -10000px !important;
        top: -10000px !important;
    }

    /*
 * Popup items have a wrapper div (dijitPopup)
 * with the real popup inside, and maybe an iframe too
 */
    .dijitPopup {
        position: absolute;
        background-color: transparent;
        margin: 0;
        border: 0;
        padding: 0;
        -webkit-overflow-scrolling: touch;
    }

    .dijitPositionOnly {
        /* Null out all position-related properties */
        padding: 0 !important;
        border: 0 !important;
        background-color: transparent !important;
        background-image: none !important;
        height: auto !important;
        width: auto !important;
    }

    .dijitNonPositionOnly {
        /* Null position-related properties */
        float: none !important;
        position: static !important;
        margin: 0 0 0 0 !important;
        vertical-align: middle !important;
    }

    .dijitBackgroundIframe {
        /* iframe used to prevent problems with PDF or other applets overlaying menus etc */
        position: absolute;
        left: 0;
        top: 0;
        width: 100%;
        height: 100%;
        z-index: -1;
        border: 0;
        padding: 0;
        margin: 0;
    }

    .dijitDisplayNone {
        /* hide something.  Use this as a class rather than element.style so another class can override */
        display: none !important;
    }

    .dijitContainer {
        /* for all layout containers */
        overflow: hidden; /* need on IE so something can be reduced in size, and so scrollbars aren't temporarily displayed when resizing */
    }

    /****
		A11Y
 ****/
    .dj_a11y .dijitIcon,
    .dj_a11y div.dijitArrowButtonInner, /* is this only for Spinner?  if so, it should be deleted */
    .dj_a11y span.dijitArrowButtonInner,
    .dj_a11y img.dijitArrowButtonInner,
    .dj_a11y .dijitCalendarIncrementControl,
    .dj_a11y .dijitTreeExpando {
        /* hide icon nodes in high contrast mode; when necessary they will be replaced by character equivalents
	 * exception for input.dijitArrowButtonInner, because the icon and character are controlled by the same node */
        display: none;
    }
    .dijitSpinner div.dijitArrowButtonInner {
        display: block; /* override previous rule */
    }

    .dj_a11y .dijitA11ySideArrow {
        display: inline !important; /* display text instead */
        cursor: pointer;
    }

    /*
 * Since we can't use shading in a11y mode, and since the underline indicates today's date,
 * use a border to show the selected date.
 * Avoid screen jitter when switching selected date by compensating for the selected node's
 * border w/padding on other nodes.
 */
    .dj_a11y .dijitCalendarDateLabel {
        padding: 1px;
        border: 0px !important;
    }
    .dj_a11y .dijitCalendarSelectedDate .dijitCalendarDateLabel {
        border-style: solid !important;
        border-width: 1px !important;
        padding: 0;
    }
    .dj_a11y .dijitCalendarDateTemplate {
        padding-bottom: 0.1em !important; /* otherwise bottom border doesn't appear on IE */
        border: 0px !important;
    }
    .dj_a11y .dijitButtonNode {
        border: black outset medium !important;

        /* In claro, hovering a toolbar button reduces padding and adds a border.
	 * Not needed in a11y mode since Toolbar buttons always have a border.
	 */
        padding: 0 !important;
    }
    .dj_a11y .dijitArrowButton {
        padding: 0 !important;
    }

    .dj_a11y .dijitButtonContents {
        margin: 0.15em; /* Margin needed to make focus outline visible */
    }

    .dj_a11y .dijitTextBoxReadOnly .dijitInputField,
    .dj_a11y .dijitTextBoxReadOnly .dijitButtonNode {
        border-style: outset !important;
        border-width: medium !important;
        border-color: #999 !important;
        color: #999 !important;
    }

    /* button inner contents - labels, icons etc. */
    .dijitButtonNode * {
        vertical-align: middle;
    }
    .dijitSelect .dijitArrowButtonInner,
    .dijitButtonNode .dijitArrowButtonInner {
        /* the arrow icon node */
        background: no-repeat center;
        width: 12px;
        height: 12px;
        direction: ltr; /* needed by IE/RTL */
    }

    /****
	3-element borders:  ( dijitLeft + dijitStretch + dijitRight )
	These were added for rounded corners on dijit.form.*Button but never actually used.
 ****/

    .dijitLeft {
        /* Left part of a 3-element border */
        background-position: left top;
        background-repeat: no-repeat;
    }

    .dijitStretch {
        /* Middle (stretchy) part of a 3-element border */
        white-space: nowrap; /* MOW: move somewhere else */
        background-repeat: repeat-x;
    }

    .dijitRight {
        /* Right part of a 3-element border */
        background-position: right top;
        background-repeat: no-repeat;
    }

    /* Buttons */
    .dj_gecko .dj_a11y .dijitButtonDisabled .dijitButtonNode {
        opacity: 0.5;
    }

    .dijitToggleButton,
    .dijitButton,
    .dijitDropDownButton,
    .dijitComboButton {
        /* outside of button */
        margin: 0.2em;
        vertical-align: middle;
    }

    .dijitButtonContents {
        display: block; /* to make focus border rectangular */
    }
    td.dijitButtonContents {
        display: table-cell; /* but don't affect Select, ComboButton */
    }

    .dijitButtonNode img {
        /* make text and images line up cleanly */
        vertical-align: middle;
        /*margin-bottom:.2em;*/
    }

    .dijitToolbar .dijitComboButton {
        /* because Toolbar only draws a border around the hovered thing */
        border-collapse: separate;
    }

    .dijitToolbar .dijitToggleButton,
    .dijitToolbar .dijitButton,
    .dijitToolbar .dijitDropDownButton,
    .dijitToolbar .dijitComboButton {
        margin: 0;
    }

    .dijitToolbar .dijitButtonContents {
        /* just because it used to be this way */
        padding: 1px 2px;
    }

    .dj_webkit .dijitToolbar .dijitDropDownButton {
        padding-left: 0.3em;
    }
    .dj_gecko .dijitToolbar .dijitButtonNode::-moz-focus-inner {
        padding: 0;
    }

    .dijitSelect {
        border: 1px solid gray;
    }
    .dijitButtonNode {
        /* Node that is acting as a button -- may or may not be a BUTTON element */
        border: 1px solid gray;
        margin: 0;
        line-height: normal;
        vertical-align: middle;
        text-align: center;
        white-space: nowrap;
    }
    .dj_webkit .dijitSpinner .dijitSpinnerButtonContainer {
        /* apparent WebKit bug where messing with the font coupled with line-height:normal X 2 (dijitReset & dijitButtonNode)
	can be different than just a single line-height:normal, visible in InlineEditBox/Spinner */
        line-height: inherit;
    }
    .dijitTextBox .dijitButtonNode {
        border-width: 0;
    }

    .dijitSelect,
    .dijitSelect *,
    .dijitButtonNode,
    .dijitButtonNode * {
        cursor: pointer;
        -webkit-tap-highlight-color: transparent;
    }

    .dj_ie .dijitButtonNode {
        /* ensure hasLayout */
        zoom: 1;
    }

    .dj_ie .dijitButtonNode button {
        /*
		disgusting hack to get rid of spurious padding around button elements
		on IE. MSIE is truly the web's boat anchor.
	*/
        overflow: visible;
    }

    div.dijitArrowButton {
        float: right;
    }

    /******
	TextBox related.
	Everything that has an <input>
*******/

    .dijitTextBox {
        border: solid black 1px;
        width: 15em; /* need to set default size on outer node since inner nodes say <input style="width:100%"> and <td width=100%>.  user can override */
        vertical-align: middle;
    }

    .dijitTextBoxReadOnly,
    .dijitTextBoxDisabled {
        color: gray;
    }
    .dj_safari .dijitTextBoxDisabled input {
        color: #b0b0b0; /* because Safari lightens disabled input/textarea no matter what color you specify */
    }
    .dj_safari textarea.dijitTextAreaDisabled {
        color: #333; /* because Safari lightens disabled input/textarea no matter what color you specify */
    }
    .dj_gecko .dijitTextBoxReadOnly input.dijitInputField, /* disable arrow and validation presentation inputs but allow real input for text selection */
    .dj_gecko .dijitTextBoxDisabled input {
        -moz-user-input: none; /* prevent focus of disabled textbox buttons */
    }

    .dijitPlaceHolder {
        /* hint text that appears in a textbox until user starts typing */
        color: #aaaaaa;
        font-style: italic;
        position: absolute;
        top: 0;
        left: 0;
        white-space: nowrap;
        pointer-events: none; /* so cut/paste context menu shows up when right clicking */
    }

    .dijitTimeTextBox {
        width: 8em;
    }

    /* rules for webkit to deal with fuzzy blue focus border */
    .dijitTextBox input:focus {
        outline: none; /* blue fuzzy line looks wrong on combobox or something w/validation icon showing */
    }
    .dijitTextBoxFocused {
        outline: 5px -webkit-focus-ring-color;
    }

    .dijitSelect input,
    .dijitTextBox input {
        float: left; /* needed by IE to remove secret margin */
    }
    .dj_ie6 input.dijitTextBox,
    .dj_ie6 .dijitTextBox input {
        float: none;
    }
    .dijitInputInner {
        /* for when an <input> is embedded inside an inline-block <div> with a size and border */
        border: 0 !important;
        background-color: transparent !important;
        width: 100% !important;
        /* IE dislikes horizontal tweaking combined with width:100% so punish everyone for consistency */
        padding-left: 0 !important;
        padding-right: 0 !important;
        margin-left: 0 !important;
        margin-right: 0 !important;
    }
    .dj_a11y .dijitTextBox input {
        margin: 0 !important;
    }
    .dijitValidationTextBoxError input.dijitValidationInner,
    .dijitSelect input,
    .dijitTextBox input.dijitArrowButtonInner {
        /* <input> used to display arrow icon/validation icon, or in arrow character in high contrast mode.
	 * The css below is a trick to hide the character in non-high-contrast mode
	 */
        text-indent: -2em !important;
        direction: ltr !important;
        text-align: left !important;
        height: auto !important;
    }
    .dj_ie .dijitSelect input,
    .dj_ie .dijitTextBox input,
    .dj_ie input.dijitTextBox {
        overflow-y: visible; /* inputs need help expanding when padding is added or line-height is adjusted */
        line-height: normal; /* strict mode */
    }
    .dijitSelect .dijitSelectLabel span {
        line-height: 100%;
    }
    .dj_ie .dijitSelect .dijitSelectLabel {
        line-height: normal;
    }
    .dj_ie6 .dijitSelect .dijitSelectLabel,
    .dj_ie7 .dijitSelect .dijitSelectLabel,
    .dj_ie8 .dijitSelect .dijitSelectLabel,
    .dj_iequirks .dijitSelect .dijitSelectLabel,
    .dijitSelect td,
    .dj_ie6 .dijitSelect input,
    .dj_iequirks .dijitSelect input,
    .dj_ie6 .dijitSelect .dijitValidationContainer,
    .dj_ie6 .dijitTextBox input,
    .dj_ie6 input.dijitTextBox,
    .dj_iequirks .dijitTextBox input.dijitValidationInner,
    .dj_iequirks .dijitTextBox input.dijitArrowButtonInner,
    .dj_iequirks .dijitTextBox input.dijitSpinnerButtonInner,
    .dj_iequirks .dijitTextBox input.dijitInputInner,
    .dj_iequirks input.dijitTextBox {
        line-height: 100%; /* IE7 problem where the icon is vertically way too low w/o this */
    }
    .dj_a11y input.dijitValidationInner,
    .dj_a11y input.dijitArrowButtonInner {
        /* (in high contrast mode) revert rules from above so character displays */
        text-indent: 0 !important;
        width: 1em !important;
        color: black !important;
    }
    .dijitValidationTextBoxError .dijitValidationContainer {
        display: inline;
        cursor: default;
    }

    /* ComboBox & Spinner */

    .dijitSpinner .dijitSpinnerButtonContainer,
    .dijitComboBox .dijitArrowButtonContainer {
        /* dividing line between input area and up/down button(s) for ComboBox and Spinner */
        border-width: 0 0 0 1px !important; /* !important needed due to wayward ".theme .dijitButtonNode" rules */
    }
    .dj_a11y .dijitSelect .dijitArrowButtonContainer,
    .dijitToolbar .dijitComboBox .dijitArrowButtonContainer {
        /* overrides above rule plus mirror-image rule in dijit_rtl.css to have no divider when ComboBox in Toolbar */
        border-width: 0 !important;
    }

    .dijitComboBoxMenu {
        /* Drop down menu is implemented as <ul> <li/> <li/> ... but we don't want circles before each item */
        list-style-type: none;
    }
    .dijitSpinner .dijitSpinnerButtonContainer .dijitButtonNode {
        /* dividing line between input area and up/down button(s) for ComboBox and Spinner */
        border-width: 0;
    }
    .dj_ie .dj_a11y .dijitSpinner .dijitSpinnerButtonContainer .dijitButtonNode {
        clear: both; /* IE workaround */
    }

    .dj_ie .dijitToolbar .dijitComboBox {
        /* make combobox buttons align properly with other buttons in a toolbar */
        vertical-align: middle;
    }

    /* Spinner */

    .dijitTextBox .dijitSpinnerButtonContainer {
        width: 1em;
        position: relative !important;
        overflow: hidden;
    }
    .dijitSpinner .dijitSpinnerButtonInner {
        width: 1em;
        visibility: hidden !important; /* just a sizing element */
        overflow-x: hidden;
    }
    .dijitComboBox .dijitButtonNode,
    .dijitSpinnerButtonContainer .dijitButtonNode {
        border-width: 0;
    }
    .dj_a11y .dijitSpinnerButtonContainer .dijitButtonNode {
        border-width: 0px !important;
        border-style: solid !important;
    }
    .dj_a11y .dijitTextBox .dijitSpinnerButtonContainer,
    .dj_a11y .dijitSpinner .dijitArrowButtonInner,
    .dj_a11y .dijitSpinnerButtonContainer input {
        width: 1em !important;
    }
    .dj_a11y .dijitSpinner .dijitArrowButtonInner {
        margin: 0 auto !important; /* should auto-center */
    }
    .dj_ie .dj_a11y .dijitSpinner .dijitArrowButtonInner .dijitInputField {
        padding-left: 0.3em !important;
        padding-right: 0.3em !important;
        margin-left: 0.3em !important;
        margin-right: 0.3em !important;
        width: 1.4em !important;
    }
    .dj_ie7 .dj_a11y .dijitSpinner .dijitArrowButtonInner .dijitInputField {
        padding-left: 0 !important; /* manually center INPUT: character is .5em and total width = 1em */
        padding-right: 0 !important;
        width: 1em !important;
    }
    .dj_ie6 .dj_a11y .dijitSpinner .dijitArrowButtonInner .dijitInputField {
        margin-left: 0.1em !important;
        margin-right: 0.1em !important;
        width: 1em !important;
    }
    .dj_iequirks .dj_a11y .dijitSpinner .dijitArrowButtonInner .dijitInputField {
        margin-left: 0 !important;
        margin-right: 0 !important;
        width: 2em !important;
    }
    .dijitSpinner .dijitSpinnerButtonContainer .dijitArrowButton {
        /* note: .dijitInputLayoutContainer makes this rule override .dijitArrowButton settings
	 * for dijit.form.Button
	 */
        padding: 0;
        position: absolute !important;
        right: 0;
        float: none;
        height: 50%;
        width: 100%;
        bottom: auto;
        left: 0;
        right: auto;
    }
    .dj_iequirks .dijitSpinner .dijitSpinnerButtonContainer .dijitArrowButton {
        width: auto;
    }
    .dj_a11y .dijitSpinnerButtonContainer .dijitArrowButton {
        overflow: visible !important;
    }
    .dijitSpinner .dijitSpinnerButtonContainer .dijitDownArrowButton {
        top: 50%;
        border-top-width: 1px !important;
    }
    .dijitSpinner .dijitSpinnerButtonContainer .dijitUpArrowButton {
        top: 0;
    }
    .dijitSpinner .dijitArrowButtonInner {
        margin: auto;
        overflow-x: hidden;
        height: 100% !important;
    }
    .dj_iequirks .dijitSpinner .dijitArrowButtonInner {
        height: auto !important;
    }
    .dijitSpinner .dijitArrowButtonInner .dijitInputField {
        transform: scale(0.5);
        transform-origin: left top;
        padding-top: 0;
        padding-bottom: 0;
        padding-left: 0 !important;
        padding-right: 0 !important;
        width: 100%;
        visibility: hidden;
    }
    .dj_ie .dijitSpinner .dijitArrowButtonInner .dijitInputField {
        zoom: 50%; /* emulate transform: scale(0.5) */
    }
    .dijitSpinner .dijitSpinnerButtonContainer .dijitArrowButtonInner {
        overflow: hidden;
    }

    .dj_a11y .dijitSpinner .dijitSpinnerButtonContainer .dijitArrowButton {
        width: 100%;
    }
    .dj_iequirks .dj_a11y .dijitSpinner .dijitSpinnerButtonContainer .dijitArrowButton {
        width: 1em; /* matches .dj_a11y .dijitTextBox .dijitSpinnerButtonContainer rule - 100% is the whole screen width in quirks */
    }
    .dj_a11y .dijitSpinner .dijitArrowButtonInner .dijitInputField {
        vertical-align: top;
        visibility: visible;
    }
    .dj_a11y .dijitSpinnerButtonContainer {
        width: 1em;
    }

    /****
		dijit.form.CheckBox
 	 &
  		dijit.form.RadioButton
 ****/

    .dijitCheckBox,
    .dijitRadio,
    .dijitCheckBoxInput {
        padding: 0;
        border: 0;
        width: 16px;
        height: 16px;
        background-position: center center;
        background-repeat: no-repeat;
        overflow: hidden;
    }

    .dijitCheckBox input,
    .dijitRadio input {
        margin: 0;
        padding: 0;
        display: block;
    }

    .dijitCheckBoxInput {
        /* place the actual input on top, but invisible */
        opacity: 0;
    }

    .dj_ie .dijitCheckBoxInput {
        filter: alpha(opacity=0);
    }

    .dj_a11y .dijitCheckBox,
    .dj_a11y .dijitRadio {
        /* in a11y mode we display the native checkbox (not the icon), so don't restrict the size */
        width: auto !important;
        height: auto !important;
    }
    .dj_a11y .dijitCheckBoxInput {
        opacity: 1;
        filter: none;
        width: auto;
        height: auto;
    }

    .dj_a11y .dijitFocusedLabel {
        /* for checkboxes or radio buttons in high contrast mode, use border rather than outline to indicate focus (outline does not work in FF)*/
        border: 1px dotted;
        outline: 0px !important;
    }

    /****
		dijit.ProgressBar
 ****/

    .dijitProgressBar {
        z-index: 0; /* so z-index settings below have no effect outside of the ProgressBar */
    }
    .dijitProgressBarEmpty {
        /* outer container and background of the bar that's not finished yet*/
        position: relative;
        overflow: hidden;
        border: 1px solid black; /* a11y: border necessary for high-contrast mode */
        z-index: 0; /* establish a stacking context for this progress bar */
    }

    .dijitProgressBarFull {
        /* outer container for background of bar that is finished */
        position: absolute;
        overflow: hidden;
        z-index: -1;
        top: 0;
        width: 100%;
    }
    .dj_ie6 .dijitProgressBarFull {
        height: 1.6em;
    }

    .dijitProgressBarTile {
        /* inner container for finished portion */
        position: absolute;
        overflow: hidden;
        top: 0;
        left: 0;
        bottom: 0;
        right: 0;
        margin: 0;
        padding: 0;
        width: 100%; /* needed for IE/quirks */
        height: auto;
        background-color: #aaa;
        background-attachment: fixed;
    }

    .dj_a11y .dijitProgressBarTile {
        /* a11y:  The border provides visibility in high-contrast mode */
        border-width: 2px;
        border-style: solid;
        background-color: transparent !important;
    }

    .dj_ie6 .dijitProgressBarTile {
        /* width:auto works in IE6 with position:static but not position:absolute */
        position: static;
        /* height:auto or 100% does not work in IE6 */
        height: 1.6em;
    }

    .dijitProgressBarIndeterminate .dijitProgressBarTile {
        /* animated gif for 'indeterminate' mode */
    }

    .dijitProgressBarIndeterminateHighContrastImage {
        display: none;
    }

    .dj_a11y .dijitProgressBarIndeterminate .dijitProgressBarIndeterminateHighContrastImage {
        display: block;
        position: absolute;
        top: 0;
        bottom: 0;
        margin: 0;
        padding: 0;
        width: 100%;
        height: auto;
    }

    .dijitProgressBarLabel {
        display: block;
        position: static;
        width: 100%;
        text-align: center;
        background-color: transparent !important;
    }

    /****
		dijit.Tooltip
 ****/

    .dijitTooltip {
        position: absolute;
        z-index: 2000;
        display: block;
        /* make visible but off screen */
        left: 0;
        top: -10000px;
        overflow: visible;
    }

    .dijitTooltipContainer {
        border: solid black 2px;
        background: #b8b5b5;
        color: black;
        font-size: small;
    }

    .dijitTooltipFocusNode {
        padding: 2px 2px 2px 2px;
    }

    .dijitTooltipConnector {
        position: absolute;
    }
    .dj_a11y .dijitTooltipConnector {
        display: none; /* won't show b/c it's background-image; hide to avoid border gap */
    }

    .dijitTooltipData {
        display: none;
    }

    /* Layout widgets. This is essential CSS to make layout work (it isn't "styling" CSS)
   make sure that the position:absolute in dijitAlign* overrides other classes */

    .dijitLayoutContainer {
        position: relative;
        display: block;
        overflow: hidden;
    }

    .dijitAlignTop,
    .dijitAlignBottom,
    .dijitAlignLeft,
    .dijitAlignRight {
        position: absolute;
        overflow: hidden;
    }

    body .dijitAlignClient {
        position: absolute;
    }

    /*
 * BorderContainer
 *
 * .dijitBorderContainer is a stylized layout where panes have border and margin.
 * .dijitBorderContainerNoGutter is a raw layout.
 */
    .dijitBorderContainer,
    .dijitBorderContainerNoGutter {
        position: relative;
        overflow: hidden;
        z-index: 0; /* so z-index settings below have no effect outside of the BorderContainer */
    }

    .dijitBorderContainerPane,
    .dijitBorderContainerNoGutterPane {
        position: absolute !important; /* !important to override position:relative in dijitTabContainer etc. */
        z-index: 2; /* above the splitters so that off-by-one browser errors don't cover up border of pane */
    }

    .dijitBorderContainer > .dijitTextArea {
        /* On Safari, for SimpleTextArea inside a BorderContainer,
		don't want to display the grip to resize */
        resize: none;
    }

    .dijitGutter {
        /* gutter is just a place holder for empty space between panes in BorderContainer */
        position: absolute;
        font-size: 1px; /* needed by IE6 even though div is empty, otherwise goes to 15px */
    }

    /* SplitContainer

	'V' == container that splits vertically (up/down)
	'H' = horizontal (left/right)
*/

    .dijitSplitter {
        position: absolute;
        overflow: hidden;
        z-index: 10; /* above the panes so that splitter focus is visible on FF, see #7583*/
        background-color: #fff;
        border-color: gray;
        border-style: solid;
        border-width: 0;
    }
    .dj_ie .dijitSplitter {
        z-index: 1; /* behind the panes so that pane borders aren't obscured see test_Gui.html/[14392] */
    }

    .dijitSplitterActive {
        z-index: 11 !important;
    }

    .dijitSplitterCover {
        position: absolute;
        z-index: -1;
        top: 0;
        left: 0;
        width: 100%;
        height: 100%;
    }

    .dijitSplitterCoverActive {
        z-index: 3 !important;
    }

    /* #6945: stop mouse events */
    .dj_ie .dijitSplitterCover {
        background: white;
        opacity: 0;
    }
    .dj_ie6 .dijitSplitterCover,
    .dj_ie7 .dijitSplitterCover,
    .dj_ie8 .dijitSplitterCover {
        filter: alpha(opacity=0);
    }

    .dijitSplitterH {
        height: 7px;
        border-top: 1px;
        border-bottom: 1px;
        cursor: row-resize;
        -webkit-tap-highlight-color: transparent;
    }
    .dijitSplitterV {
        width: 7px;
        border-left: 1px;
        border-right: 1px;
        cursor: col-resize;
        -webkit-tap-highlight-color: transparent;
    }
    .dijitSplitContainer {
        position: relative;
        overflow: hidden;
        display: block;
    }

    .dijitSplitPane {
        position: absolute;
    }

    .dijitSplitContainerSizerH,
    .dijitSplitContainerSizerV {
        position: absolute;
        font-size: 1px;
        background-color: ThreeDFace;
        border: 1px solid;
        border-color: ThreeDHighlight ThreeDShadow ThreeDShadow ThreeDHighlight;
        margin: 0;
    }

    .dijitSplitContainerSizerH .thumb,
    .dijitSplitterV .dijitSplitterThumb {
        overflow: hidden;
        position: absolute;
        top: 49%;
    }

    .dijitSplitContainerSizerV .thumb,
    .dijitSplitterH .dijitSplitterThumb {
        position: absolute;
        left: 49%;
    }

    .dijitSplitterShadow,
    .dijitSplitContainerVirtualSizerH,
    .dijitSplitContainerVirtualSizerV {
        font-size: 1px;
        background-color: ThreeDShadow;
        opacity: 0.5;
        margin: 0;
    }

    .dijitSplitContainerSizerH,
    .dijitSplitContainerVirtualSizerH {
        cursor: col-resize;
    }

    .dijitSplitContainerSizerV,
    .dijitSplitContainerVirtualSizerV {
        cursor: row-resize;
    }

    .dj_a11y .dijitSplitterH {
        border-top: 1px solid #d3d3d3 !important;
        border-bottom: 1px solid #d3d3d3 !important;
    }
    .dj_a11y .dijitSplitterV {
        border-left: 1px solid #d3d3d3 !important;
        border-right: 1px solid #d3d3d3 !important;
    }

    /* ContentPane */

    .dijitContentPane {
        display: block;
        overflow: auto; /* if we don't have this (or overflow:hidden), then Widget.resizeTo() doesn't make sense for ContentPane */
        -webkit-overflow-scrolling: touch;
    }

    .dijitContentPaneSingleChild {
        /*
	 * if the ContentPane holds a single layout widget child which is being sized to match the content pane,
	 * then the ContentPane should never get a scrollbar (but it does due to browser bugs, see #9449
	 */
        overflow: hidden;
    }

    .dijitContentPaneLoading .dijitIconLoading,
    .dijitContentPaneError .dijitIconError {
        margin-right: 9px;
    }

    /* TitlePane and Fieldset */

    .dijitTitlePane {
        display: block;
        overflow: hidden;
    }
    .dijitFieldset {
        border: 1px solid gray;
    }
    .dijitTitlePaneTitle,
    .dijitFieldsetTitle {
        cursor: pointer;
        -webkit-tap-highlight-color: transparent;
    }
    .dijitTitlePaneTitleFixedOpen,
    .dijitTitlePaneTitleFixedClosed,
    .dijitFieldsetTitleFixedOpen,
    .dijitFieldsetTitleFixedClosed {
        /* TitlePane or Fieldset that cannot be toggled */
        cursor: default;
    }
    .dijitTitlePaneTitle * {
        vertical-align: middle;
    }
    .dijitTitlePane .dijitArrowNodeInner,
    .dijitFieldset .dijitArrowNodeInner {
        /* normally, hide arrow text in favor of icon */
        display: none;
    }
    .dj_a11y .dijitTitlePane .dijitArrowNodeInner,
    .dj_a11y .dijitFieldset .dijitArrowNodeInner {
        /* ... except in a11y mode, then show text arrow */
        display: inline;
        font-family: monospace; /* because - and + are different widths */
    }
    .dj_a11y .dijitTitlePane .dijitArrowNode,
    .dj_a11y .dijitFieldset .dijitArrowNode {
        /* ... and hide icon (TODO: just point dijitIcon class on the icon, and it hides automatically) */
        display: none;
    }
    .dijitTitlePaneTitleFixedOpen .dijitArrowNode,
    .dijitTitlePaneTitleFixedOpen .dijitArrowNodeInner,
    .dijitTitlePaneTitleFixedClosed .dijitArrowNode,
    .dijitTitlePaneTitleFixedClosed .dijitArrowNodeInner,
    .dijitFieldsetTitleFixedOpen .dijitArrowNode,
    .dijitFieldsetTitleFixedOpen .dijitArrowNodeInner,
    .dijitFieldsetTitleFixedClosed .dijitArrowNode,
    .dijitFieldsetTitleFixedClosed .dijitArrowNodeInner {
        /* don't show the open close icon or text arrow; it makes the user think the pane is closable */
        display: none !important; /* !important to override above a11y rules to show text arrow */
    }

    .dj_ie6 .dijitTitlePaneContentOuter,
    .dj_ie6 .dijitTitlePane .dijitTitlePaneTitle {
        /* force hasLayout to ensure borders etc, show up */
        zoom: 1;
    }

    /* Color Palette
 * Sizes designed so that table cell positions match icons in underlying image,
 * which appear at 20x20 intervals.
 */

    .dijitColorPalette {
        border: 1px solid #999;
        background: #fff;
        position: relative;
    }

    .dijitColorPalette .dijitPaletteTable {
        /* Table that holds the palette cells, and overlays image file with color swatches.
	 * padding/margin to align table with image.
	 */
        padding: 2px 3px 3px 3px;
        position: relative;
        overflow: hidden;
        outline: 0;
        border-collapse: separate;
    }
    .dj_ie6 .dijitColorPalette .dijitPaletteTable,
    .dj_ie7 .dijitColorPalette .dijitPaletteTable,
    .dj_iequirks .dijitColorPalette .dijitPaletteTable {
        /* using padding above so that focus border isn't cutoff on moz/webkit,
	 * but using margin on IE because padding doesn't seem to work
	 */
        padding: 0;
        margin: 2px 3px 3px 3px;
    }

    .dijitColorPalette .dijitPaletteCell {
        /* <td> in the <table> */
        font-size: 1px;
        vertical-align: middle;
        text-align: center;
        background: none;
    }
    .dijitColorPalette .dijitPaletteImg {
        /* Called dijitPaletteImg for back-compat, this actually wraps the color swatch with a border and padding */
        padding: 1px; /* white area between gray border and color swatch */
        border: 1px solid #999;
        margin: 2px 1px;
        cursor: default;
        font-size: 1px; /* prevent <span> from getting bigger just to hold a character */
    }
    .dj_gecko .dijitColorPalette .dijitPaletteImg {
        padding-bottom: 0; /* workaround rendering glitch on FF, it adds an extra pixel at the bottom */
    }
    .dijitColorPalette .dijitColorPaletteSwatch {
        /* the actual part where the color is */
        width: 14px;
        height: 12px;
    }
    .dijitPaletteTable td {
        padding: 0;
    }
    .dijitColorPalette .dijitPaletteCell:hover .dijitPaletteImg {
        /* hovered color swatch */
        border: 1px solid #000;
    }

    .dijitColorPalette .dijitPaletteCell:active .dijitPaletteImg,
    .dijitColorPalette .dijitPaletteTable .dijitPaletteCellSelected .dijitPaletteImg {
        border: 2px solid #000;
        margin: 1px 0; /* reduce margin to compensate for increased border */
    }

    .dj_a11y .dijitColorPalette .dijitPaletteTable,
    .dj_a11y .dijitColorPalette .dijitPaletteTable * {
        /* table cells are to catch events, but the swatches are in the PaletteImg behind the table */
        background-color: transparent !important;
    }

    /* AccordionContainer */

    .dijitAccordionContainer {
        border: 1px solid #b7b7b7;
        border-top: 0 !important;
    }
    .dijitAccordionTitle {
        cursor: pointer;
        -webkit-tap-highlight-color: transparent;
    }
    .dijitAccordionTitleSelected {
        cursor: default;
    }

    /* images off, high-contrast mode styles */
    .dijitAccordionTitle .arrowTextUp,
    .dijitAccordionTitle .arrowTextDown {
        display: none;
        font-size: 0.65em;
        font-weight: normal !important;
    }

    .dj_a11y .dijitAccordionTitle .arrowTextUp,
    .dj_a11y .dijitAccordionTitleSelected .arrowTextDown {
        display: inline;
    }

    .dj_a11y .dijitAccordionTitleSelected .arrowTextUp {
        display: none;
    }

    .dijitAccordionChildWrapper {
        /* this is the node whose height is adjusted */
        overflow: hidden;
    }

    /* Calendar */

    .dijitCalendarContainer table {
        width: auto; /* in case user has specified a width for the TABLE nodes, see #10553 */
        clear: both; /* clear margin created for left/right month arrows; needed on IE10 for CalendarLite */
    }
    .dijitCalendarContainer th,
    .dijitCalendarContainer td {
        padding: 0;
        vertical-align: middle;
    }

    .dijitCalendarMonthContainer {
        text-align: center;
    }
    .dijitCalendarDecrementArrow {
        float: left;
    }
    .dijitCalendarIncrementArrow {
        float: right;
    }

    .dijitCalendarYearLabel {
        white-space: nowrap; /* make sure previous, current, and next year appear on same row */
    }

    .dijitCalendarNextYear {
        margin: 0 0 0 0.55em;
    }

    .dijitCalendarPreviousYear {
        margin: 0 0.55em 0 0;
    }

    .dijitCalendarIncrementControl {
        vertical-align: middle;
    }

    .dijitCalendarIncrementControl,
    .dijitCalendarDateTemplate,
    .dijitCalendarMonthLabel,
    .dijitCalendarPreviousYear,
    .dijitCalendarNextYear {
        cursor: pointer;
        -webkit-tap-highlight-color: transparent;
    }

    .dijitCalendarDisabledDate {
        color: gray;
        text-decoration: line-through;
        cursor: default;
    }

    .dijitSpacer {
        /* don't display it, but make it affect the width */
        position: relative;
        height: 1px;
        overflow: hidden;
        visibility: hidden;
    }

    /* Styling for month drop down list */

    .dijitCalendarMonthMenu .dijitCalendarMonthLabel {
        text-align: center;
    }

    /* Menu */

    .dijitMenu {
        border: 1px solid black;
        background-color: white;
    }
    .dijitMenuTable {
        border-collapse: collapse;
        border-width: 0;
        background-color: white;
    }

    /* workaround for webkit bug #8427, remove this when it is fixed upstream */
    .dj_webkit .dijitMenuTable td[colspan="2"] {
        border-right: hidden;
    }

    .dijitMenuItem {
        text-align: left;
        white-space: nowrap;
        padding: 0.1em 0.2em;
        cursor: pointer;
        -webkit-tap-highlight-color: transparent;
    }

    /*
No need to show a focus border since it's obvious from the shading, and there's a .dj_a11y .dijitMenuItemSelected
rule below that handles the high contrast case when there's no shading.
Hiding the focus border also works around webkit bug https://code.google.com/p/chromium/issues/detail?id=125779.
*/
    .dijitMenuItem:focus {
        outline: none;
    }

    .dijitMenuPassive .dijitMenuItemHover,
    .dijitMenuItemSelected {
        /*
	 * dijitMenuItemHover refers to actual mouse over
	 * dijitMenuItemSelected is used after a menu has been "activated" by
	 * clicking it, tabbing into it, or being opened from a parent menu,
	 * and denotes that the menu item has focus or that focus is on a child
	 * menu
	 */
        background-color: black;
        color: white;
    }

    .dijitMenuItemIcon,
    .dijitMenuExpand {
        background-repeat: no-repeat;
    }

    .dijitMenuItemDisabled * {
        /* for a disabled menu item, just set it to mostly transparent */
        opacity: 0.5;
        cursor: default;
    }
    .dj_ie .dj_a11y .dijitMenuItemDisabled,
    .dj_ie .dj_a11y .dijitMenuItemDisabled *,
    .dj_ie .dijitMenuItemDisabled * {
        color: gray;
        filter: alpha(opacity=35);
    }

    .dijitMenuItemLabel {
        vertical-align: middle;
    }

    .dj_a11y .dijitMenuItemSelected {
        border: 1px dotted black !important; /* for 2.0 use outline instead, to prevent jitter */
    }

    .dj_a11y .dijitMenuItemSelected .dijitMenuItemLabel {
        border-width: 1px;
        border-style: solid;
    }
    .dj_ie8 .dj_a11y .dijitMenuItemLabel {
        position: static;
    }

    .dijitMenuExpandA11y {
        display: none;
    }
    .dj_a11y .dijitMenuExpandA11y {
        display: inline;
    }

    .dijitMenuSeparator td {
        border: 0;
        padding: 0;
    }

    /* separator can be two pixels -- set border of either one to 0 to have only one */
    .dijitMenuSeparatorTop {
        height: 50%;
        margin: 0;
        margin-top: 3px;
        font-size: 1px;
    }

    .dijitMenuSeparatorBottom {
        height: 50%;
        margin: 0;
        margin-bottom: 3px;
        font-size: 1px;
    }

    /* CheckedMenuItem and RadioMenuItem */
    .dijitMenuItemIconChar {
        display: none; /* don't display except in high contrast mode */
        visibility: hidden; /* for high contrast mode when menuitem is unchecked: leave space for when it is checked */
    }
    .dj_a11y .dijitMenuItemIconChar {
        display: inline; /* display character in high contrast mode, since icon doesn't show */
    }
    .dijitCheckedMenuItemChecked .dijitMenuItemIconChar,
    .dijitRadioMenuItemChecked .dijitMenuItemIconChar {
        visibility: visible; /* menuitem is checked */
    }
    .dj_ie .dj_a11y .dijitMenuBar .dijitMenuItem {
        /* so bottom border of MenuBar appears on IE7 in high-contrast mode */
        margin: 0;
    }

    /* StackContainer */

    .dijitStackController .dijitToggleButtonChecked * {
        cursor: default; /* because pressing it has no effect */
    }

    /***
TabContainer

Main class hierarchy:

.dijitTabContainer - the whole TabContainer
   .dijitTabController / .dijitTabListContainer-top - wrapper for tab buttons, scroll buttons
	 .dijitTabListWrapper / .dijitTabContainerTopStrip - outer wrapper for tab buttons (normal width)
		.nowrapTabStrip / .dijitTabContainerTop-tabs - inner wrapper for tab buttons (50K width)
   .dijitTabPaneWrapper - wrapper for content panes, has all borders except the one between content and tabs
***/

    .dijitTabContainer {
        z-index: 0; /* so z-index settings below have no effect outside of the TabContainer */
        overflow: visible; /* prevent off-by-one-pixel errors from hiding bottom border (opposite tab labels) */
    }
    .dj_ie6 .dijitTabContainer {
        /* workaround IE6 problem when tall content overflows TabContainer, see editor/test_FullScreen.html */
        overflow: hidden;
    }
    .dijitTabContainerNoLayout {
        width: 100%; /* otherwise ScrollingTabController goes to 50K pixels wide */
    }

    .dijitTabContainerBottom-tabs,
    .dijitTabContainerTop-tabs,
    .dijitTabContainerLeft-tabs,
    .dijitTabContainerRight-tabs {
        z-index: 1;
        overflow: visible !important; /* so tabs can cover up border adjacent to container */
    }

    .dijitTabController {
        z-index: 1;
    }
    .dijitTabContainerBottom-container,
    .dijitTabContainerTop-container,
    .dijitTabContainerLeft-container,
    .dijitTabContainerRight-container {
        z-index: 0;
        overflow: hidden;
        border: 1px solid black;
    }
    .nowrapTabStrip {
        width: 50000px;
        display: block;
        position: relative;
        text-align: left; /* just in case ancestor has non-standard setting */
        z-index: 1;
    }
    .dijitTabListWrapper {
        overflow: hidden;
        z-index: 1;
    }

    .dj_a11y .tabStripButton img {
        /* hide the icons (or rather the empty space where they normally appear) because text will appear instead */
        display: none;
    }

    .dijitTabContainerTop-tabs {
        border-bottom: 1px solid black;
    }
    .dijitTabContainerTop-container {
        border-top: 0;
    }

    .dijitTabContainerLeft-tabs {
        border-right: 1px solid black;
        float: left; /* needed for IE7 RTL mode */
    }
    .dijitTabContainerLeft-container {
        border-left: 0;
    }

    .dijitTabContainerBottom-tabs {
        border-top: 1px solid black;
    }
    .dijitTabContainerBottom-container {
        border-bottom: 0;
    }

    .dijitTabContainerRight-tabs {
        border-left: 1px solid black;
        float: left; /* needed for IE7 RTL mode */
    }
    .dijitTabContainerRight-container {
        border-right: 0;
    }

    div.dijitTabDisabled,
    .dj_ie div.dijitTabDisabled {
        cursor: auto;
    }

    .dijitTab {
        position: relative;
        cursor: pointer;
        -webkit-tap-highlight-color: transparent;
        white-space: nowrap;
        z-index: 3;
    }
    .dijitTab * {
        /* make tab icons and close icon line up w/text */
        vertical-align: middle;
    }
    .dijitTabChecked {
        cursor: default; /* because clicking will have no effect */
    }

    .dijitTabContainerTop-tabs .dijitTab {
        top: 1px; /* to overlap border on .dijitTabContainerTop-tabs */
    }
    .dijitTabContainerBottom-tabs .dijitTab {
        top: -1px; /* to overlap border on .dijitTabContainerBottom-tabs */
    }
    .dijitTabContainerLeft-tabs .dijitTab {
        left: 1px; /* to overlap border on .dijitTabContainerLeft-tabs */
    }
    .dijitTabContainerRight-tabs .dijitTab {
        left: -1px; /* to overlap border on .dijitTabContainerRight-tabs */
    }

    .dijitTabContainerTop-tabs .dijitTab,
    .dijitTabContainerBottom-tabs .dijitTab {
        /* Inline-block */
        display: inline-block; /* webkit and FF3 */
    }

    .tabStripButton {
        z-index: 12;
    }

    .dijitTabButtonDisabled .tabStripButton {
        display: none;
    }

    .dijitTabCloseButton {
        margin-left: 1em;
    }

    .dijitTabCloseText {
        display: none;
    }

    .dijitTab .tabLabel {
        /* make sure tabs w/close button and w/out close button are same height, even w/small (<15px) font.
	 * assumes <=15px height for close button icon.
	 */
        min-height: 15px;
        display: inline-block;
    }
    .dijitNoIcon {
        /* applied to <img>/<span> node when there is no icon specified */
        display: none;
    }
    .dj_ie6 .dijitTab .dijitNoIcon {
        /* because min-height (on .tabLabel, above) doesn't work on IE6 */
        display: inline;
        height: 15px;
        width: 1px;
    }

    /* images off, high-contrast mode styles */

    .dj_a11y .dijitTabCloseButton {
        background-image: none !important;
        width: auto !important;
        height: auto !important;
    }

    .dj_a11y .dijitTabCloseText {
        display: inline;
    }

    .dijitTabPane,
    .dijitStackContainer-child,
    .dijitAccordionContainer-child {
        /* children of TabContainer, StackContainer, and AccordionContainer shouldn't have borders
	 * b/c a border is already there from the TabContainer/StackContainer/AccordionContainer itself.
	 */
        border: none !important;
    }

    /* InlineEditBox */
    .dijitInlineEditBoxDisplayMode {
        border: 1px solid transparent; /* so keyline (border) on hover can appear without screen jump */
        cursor: text;
    }

    .dj_a11y .dijitInlineEditBoxDisplayMode,
    .dj_ie6 .dijitInlineEditBoxDisplayMode {
        /* except that IE6 doesn't support transparent borders, nor does high contrast mode */
        border: none;
    }

    .dijitInlineEditBoxDisplayModeHover,
    .dj_a11y .dijitInlineEditBoxDisplayModeHover,
    .dj_ie6 .dijitInlineEditBoxDisplayModeHover {
        /* An InlineEditBox in view mode (click this to edit the text) */
        background-color: #e2ebf2;
        border: solid 1px black;
    }

    .dijitInlineEditBoxDisplayModeDisabled {
        cursor: default;
    }

    /* Tree */
    .dijitTree {
        overflow: auto; /* for scrollbars when Tree has a height setting, and to prevent wrapping around float elements, see #11491 */
        -webkit-tap-highlight-color: transparent;
    }

    .dijitTreeContainer {
        float: left; /* for correct highlighting during horizontal scroll, see #16132 */
    }

    .dijitTreeIndent {
        /* amount to indent each tree node (relative to parent node) */
        width: 19px;
    }

    .dijitTreeRow,
    .dijitTreeContent {
        white-space: nowrap;
    }

    .dj_ie .dijitTreeLabel:focus {
        /* workaround IE9 behavior where down arrowing through TreeNodes doesn't show focus outline */
        outline: 1px dotted black;
    }

    .dijitTreeRow img {
        /* make the expando and folder icons line up with the label */
        vertical-align: middle;
    }

    .dijitTreeContent {
        cursor: default;
    }

    .dijitExpandoText {
        display: none;
    }

    .dj_a11y .dijitExpandoText {
        display: inline;
        padding-left: 10px;
        padding-right: 10px;
        font-family: monospace;
        border-style: solid;
        border-width: thin;
        cursor: pointer;
    }

    .dijitTreeLabel {
        margin: 0 4px;
    }

    /* Dialog */

    .dijitDialog {
        position: absolute;
        z-index: 999;
        overflow: hidden; /* override overflow: auto; from ContentPane to make dragging smoother */
    }

    .dijitDialogTitleBar {
        cursor: move;
    }
    .dijitDialogFixed .dijitDialogTitleBar {
        cursor: default;
    }
    .dijitDialogCloseIcon {
        cursor: pointer;
        -webkit-tap-highlight-color: transparent;
    }
    .dijitDialogPaneContent {
        -webkit-overflow-scrolling: touch;
    }
    .dijitDialogUnderlayWrapper {
        position: absolute;
        left: 0;
        top: 0;
        z-index: 998;
        display: none;
        background: transparent !important;
    }

    .dijitDialogUnderlay {
        background: #eee;
        opacity: 0.5;
    }

    .dj_ie .dijitDialogUnderlay {
        filter: alpha(opacity=50);
    }

    /* images off, high-contrast mode styles */
    .dj_a11y .dijitSpinnerButtonContainer,
    .dj_a11y .dijitDialog {
        opacity: 1 !important;
        background-color: white !important;
    }

    .dijitDialog .closeText {
        display: none;
        /* for the onhover border in high contrast on IE: */
        position: absolute;
    }

    .dj_a11y .dijitDialog .closeText {
        display: inline;
    }

    /* Slider */

    .dijitSliderMoveable {
        z-index: 99;
        position: absolute !important;
        display: block;
        vertical-align: middle;
    }

    .dijitSliderMoveableH {
        right: 0;
    }
    .dijitSliderMoveableV {
        right: 50%;
    }

    .dj_a11y div.dijitSliderImageHandle,
    .dijitSliderImageHandle {
        margin: 0;
        padding: 0;
        position: relative !important;
        border: 8px solid gray;
        width: 0;
        height: 0;
        cursor: pointer;
        -webkit-tap-highlight-color: transparent;
    }
    .dj_iequirks .dj_a11y .dijitSliderImageHandle {
        font-size: 0;
    }
    .dj_ie7 .dijitSliderImageHandle {
        overflow: hidden; /* IE7 workaround to make slider handle VISIBLE in non-a11y mode */
    }
    .dj_ie7 .dj_a11y .dijitSliderImageHandle {
        overflow: visible; /* IE7 workaround to make slider handle VISIBLE in a11y mode */
    }
    .dj_a11y .dijitSliderFocused .dijitSliderImageHandle {
        border: 4px solid #000;
        height: 8px;
        width: 8px;
    }

    .dijitSliderImageHandleV {
        top: -8px;
        right: -50%;
    }

    .dijitSliderImageHandleH {
        left: 50%;
        top: -5px;
        vertical-align: top;
    }

    .dijitSliderBar {
        border-style: solid;
        border-color: black;
        cursor: pointer;
        -webkit-tap-highlight-color: transparent;
    }

    .dijitSliderBarContainerV {
        position: relative;
        height: 100%;
        z-index: 1;
    }

    .dijitSliderBarContainerH {
        position: relative;
        z-index: 1;
    }

    .dijitSliderBarH {
        height: 4px;
        border-width: 1px 0;
    }

    .dijitSliderBarV {
        width: 4px;
        border-width: 0 1px;
    }

    .dijitSliderProgressBar {
        background-color: red;
        z-index: 1;
    }

    .dijitSliderProgressBarV {
        position: static !important;
        height: 0;
        vertical-align: top;
        text-align: left;
    }

    .dijitSliderProgressBarH {
        position: absolute !important;
        width: 0;
        vertical-align: middle;
        overflow: visible;
    }

    .dijitSliderRemainingBar {
        overflow: hidden;
        background-color: transparent;
        z-index: 1;
    }

    .dijitSliderRemainingBarV {
        height: 100%;
        text-align: left;
    }

    .dijitSliderRemainingBarH {
        width: 100% !important;
    }

    /* the slider bumper is the space consumed by the slider handle when it hangs over an edge */
    .dijitSliderBumper {
        overflow: hidden;
        z-index: 1;
    }

    .dijitSliderBumperV {
        width: 4px;
        height: 8px;
        border-width: 0 1px;
    }

    .dijitSliderBumperH {
        width: 8px;
        height: 4px;
        border-width: 1px 0;
    }

    .dijitSliderBottomBumper,
    .dijitSliderLeftBumper {
        background-color: red;
    }

    .dijitSliderTopBumper,
    .dijitSliderRightBumper {
        background-color: transparent;
    }

    .dijitSliderDecoration {
        text-align: center;
    }

    .dijitSliderDecorationC,
    .dijitSliderDecorationV {
        position: relative; /* needed for IE+quirks+RTL+vertical (rendering bug) but add everywhere for custom styling consistency but this messes up IE horizontal sliders */
    }

    .dijitSliderDecorationH {
        width: 100%;
    }

    .dijitSliderDecorationV {
        height: 100%;
        white-space: nowrap;
    }

    .dijitSliderButton {
        font-family: monospace;
        margin: 0;
        padding: 0;
        display: block;
    }

    .dj_a11y .dijitSliderButtonInner {
        visibility: visible !important;
    }

    .dijitSliderButtonContainer {
        text-align: center;
        height: 0; /* ??? */
    }
    .dijitSliderButtonContainer * {
        cursor: pointer;
        -webkit-tap-highlight-color: transparent;
    }

    .dijitSlider .dijitButtonNode {
        padding: 0;
        display: block;
    }

    .dijitRuleContainer {
        position: relative;
        overflow: visible;
    }

    .dijitRuleContainerV {
        height: 100%;
        line-height: 0;
        float: left;
        text-align: left;
    }

    .dj_opera .dijitRuleContainerV {
        line-height: 2%;
    }

    .dj_ie .dijitRuleContainerV {
        line-height: normal;
    }

    .dj_gecko .dijitRuleContainerV {
        margin: 0 0 1px 0; /* mozilla bug workaround for float:left,height:100% block elements */
    }

    .dijitRuleMark {
        position: absolute;
        border: 1px solid black;
        line-height: 0;
        height: 100%;
    }

    .dijitRuleMarkH {
        width: 0;
        border-top-width: 0 !important;
        border-bottom-width: 0 !important;
        border-left-width: 0 !important;
    }

    .dijitRuleLabelContainer {
        position: absolute;
    }

    .dijitRuleLabelContainerH {
        text-align: center;
        display: inline-block;
    }

    .dijitRuleLabelH {
        position: relative;
        left: -50%;
    }

    .dijitRuleLabelV {
        /* so that long labels don't overflow to multiple rows, or overwrite slider itself */
        text-overflow: ellipsis;
        white-space: nowrap;
        overflow: hidden;
    }

    .dijitRuleMarkV {
        height: 0;
        border-right-width: 0 !important;
        border-bottom-width: 0 !important;
        border-left-width: 0 !important;
        width: 100%;
        left: 0;
    }

    .dj_ie .dijitRuleLabelContainerV {
        margin-top: -0.55em;
    }

    .dj_a11y .dijitSliderReadOnly,
    .dj_a11y .dijitSliderDisabled {
        opacity: 0.6;
    }
    .dj_ie .dj_a11y .dijitSliderReadOnly .dijitSliderBar,
    .dj_ie .dj_a11y .dijitSliderDisabled .dijitSliderBar {
        filter: alpha(opacity=40);
    }

    /* + and - Slider buttons: override theme settings to display icons */
    .dj_a11y .dijitSlider .dijitSliderButtonContainer div {
        font-family: monospace; /* otherwise hyphen is larger and more vertically centered */
        font-size: 1em;
        line-height: 1em;
        height: auto;
        width: auto;
        margin: 0 4px;
    }

    /* Icon-only buttons (often in toolbars) still display the text in high-contrast mode */
    .dj_a11y .dijitButtonContents .dijitButtonText,
    .dj_a11y .dijitTab .tabLabel {
        display: inline !important;
    }
    .dj_a11y .dijitSelect .dijitButtonText {
        display: inline-block !important;
    }

    /* TextArea, SimpleTextArea */
    .dijitTextArea {
        width: 100%;
        overflow-y: auto; /* w/out this IE's SimpleTextArea goes to overflow: scroll */
    }
    .dijitTextArea[cols] {
        width: auto; /* SimpleTextArea cols */
    }
    .dj_ie .dijitTextAreaCols {
        width: auto;
    }

    .dijitExpandingTextArea {
        /* for auto exanding textarea (called Textarea currently, rename for 2.0) don't want to display the grip to resize */
        resize: none;
    }

    /* Toolbar
 * Note that other toolbar rules (for objects in toolbars) are scattered throughout this file.
 */

    .dijitToolbarSeparator {
        height: 18px;
        width: 5px;
        padding: 0 1px;
        margin: 0;
    }

    /* Editor */
    .dijitIEFixedToolbar {
        position: absolute;
        /* top:0; */
        top: expression(eval((document.documentElement||document.body) .scrollTop));
    }

    .dijitEditor {
        display: block; /* prevents glitch on FF with InlineEditBox, see #8404 */
    }

    .dijitEditorDisabled,
    .dijitEditorReadOnly {
        color: gray;
    }

    /* TimePicker */

    .dijitTimePicker {
        background-color: white;
    }
    .dijitTimePickerItem {
        cursor: pointer;
        -webkit-tap-highlight-color: transparent;
    }
    .dijitTimePickerItemHover {
        background-color: gray;
        color: white;
    }
    .dijitTimePickerItemSelected {
        font-weight: bold;
        color: #333;
        background-color: #b7cdee;
    }
    .dijitTimePickerItemDisabled {
        color: gray;
        text-decoration: line-through;
    }

    .dijitTimePickerItemInner {
        text-align: center;
        border: 0;
        padding: 2px 8px 2px 8px;
    }

    .dijitTimePickerTick,
    .dijitTimePickerMarker {
        border-bottom: 1px solid gray;
    }

    .dijitTimePicker .dijitDownArrowButton {
        border-top: none !important;
    }

    .dijitTimePickerTick {
        color: #ccc;
    }

    .dijitTimePickerMarker {
        color: black;
        background-color: #ccc;
    }

    .dj_a11y .dijitTimePickerItemSelected .dijitTimePickerItemInner {
        border: solid 4px black;
    }
    .dj_a11y .dijitTimePickerItemHover .dijitTimePickerItemInner {
        border: dashed 4px black;
    }

    .dijitToggleButtonIconChar {
        /* character (instead of icon) to show that ToggleButton is checked */
        display: none !important;
    }
    .dj_a11y .dijitToggleButton .dijitToggleButtonIconChar {
        display: inline !important;
        visibility: hidden;
    }
    .dj_ie6 .dijitToggleButtonIconChar,
    .dj_ie6 .tabStripButton .dijitButtonText {
        font-family: "Arial Unicode MS"; /* otherwise the a11y character (checkmark, arrow, etc.) appears as a box */
    }
    .dj_a11y .dijitToggleButtonChecked .dijitToggleButtonIconChar {
        display: inline !important; /* In high contrast mode, display the check symbol */
        visibility: visible !important;
    }

    .dijitArrowButtonChar {
        display: none !important;
    }
    .dj_a11y .dijitArrowButtonChar {
        display: inline !important;
    }

    .dj_a11y .dijitDropDownButton .dijitArrowButtonInner,
    .dj_a11y .dijitComboButton .dijitArrowButtonInner {
        display: none !important;
    }

    /* Select */
    .dj_a11y .dijitSelect {
        border-collapse: separate !important;
        border-width: 1px;
        border-style: solid;
    }
    .dj_ie .dijitSelect {
        vertical-align: middle; /* Set this back for what we hack in dijit inline */
    }
    .dj_ie6 .dijitSelect .dijitValidationContainer,
    .dj_ie8 .dijitSelect .dijitButtonText {
        vertical-align: top;
    }
    .dj_ie6 .dijitTextBox .dijitInputContainer,
    .dj_iequirks .dijitTextBox .dijitInputContainer,
    .dj_ie6 .dijitTextBox .dijitArrowButtonInner,
    .dj_ie6 .dijitSpinner .dijitSpinnerButtonInner,
    .dijitSelect .dijitSelectLabel {
        vertical-align: baseline;
    }

    .dijitNumberTextBox {
        text-align: left;
        direction: ltr;
    }

    .dijitNumberTextBox .dijitInputInner {
        text-align: inherit; /* input */
    }

    .dijitNumberTextBox input.dijitInputInner,
    .dijitCurrencyTextBox input.dijitInputInner,
    .dijitSpinner input.dijitInputInner {
        text-align: right;
    }

    .dj_ie8 .dijitNumberTextBox input.dijitInputInner,
    .dj_ie9 .dijitNumberTextBox input.dijitInputInner,
    .dj_ie8 .dijitCurrencyTextBox input.dijitInputInner,
    .dj_ie9 .dijitCurrencyTextBox input.dijitInputInner,
    .dj_ie8 .dijitSpinner input.dijitInputInner,
    .dj_ie9 .dijitSpinner input.dijitInputInner {
        /* workaround bug where caret invisible in empty textboxes */
        padding-right: 1px !important;
    }

    .dijitToolbar .dijitSelect {
        margin: 0;
    }
    .dj_webkit .dijitToolbar .dijitSelect {
        padding-left: 0.3em;
    }
    .dijitSelect .dijitButtonContents {
        padding: 0;
        white-space: nowrap;
        text-align: left;
        border-style: none solid none none;
        border-width: 1px;
    }
    .dijitSelectFixedWidth .dijitButtonContents {
        width: 100%;
    }

    .dijitSelectMenu .dijitMenuItemIcon {
        /* avoid blank area in left side of menu (since we have no icons) */
        display: none;
    }
    .dj_ie6 .dijitSelectMenu .dijitMenuItemLabel,
    .dj_ie7 .dijitSelectMenu .dijitMenuItemLabel {
        /* Set back to static due to bug in ie6/ie7 - See Bug #9651 */
        position: static;
    }

    /* Fix the baseline of our label (for multi-size font elements) */
    .dijitSelectLabel * {
        vertical-align: baseline;
    }

    /* Styling for the currently-selected option (rich text can mess this up) */
    .dijitSelectSelectedOption * {
        font-weight: bold;
    }

    /* Fix the styling of the dropdown menu to be more combobox-like */
    .dijitSelectMenu {
        border-width: 1px;
    }

    /* Used in cases, such as FullScreen plugin, when we need to force stuff to static positioning. */
    .dijitForceStatic {
        position: static !important;
    }

    /**** Disabled cursor *****/
    .dijitReadOnly *,
    .dijitDisabled *,
    .dijitReadOnly,
    .dijitDisabled {
        /* a region the user would be able to click on, but it's disabled */
        cursor: default;
    }

    /* Drag and Drop */
    .dojoDndItem {
        padding: 2px; /* will be replaced by border during drag over (dojoDndItemBefore, dojoDndItemAfter) */

        /* Prevent magnifying-glass text selection icon to appear on mobile webkit as it causes a touchout event */
        -webkit-touch-callout: none;
        -webkit-user-select: none; /* Disable selection/Copy of UIWebView */
    }
    .dojoDndHorizontal .dojoDndItem {
        /* make contents of horizontal container be side by side, rather than vertical */
        display: inline-block;
    }

    .dojoDndItemBefore,
    .dojoDndItemAfter {
        border: 0px solid #369;
    }
    .dojoDndItemBefore {
        border-width: 2px 0 0 0;
        padding: 0 2px 2px 2px;
    }
    .dojoDndItemAfter {
        border-width: 0 0 2px 0;
        padding: 2px 2px 0 2px;
    }
    .dojoDndHorizontal .dojoDndItemBefore {
        border-width: 0 0 0 2px;
        padding: 2px 2px 2px 0;
    }
    .dojoDndHorizontal .dojoDndItemAfter {
        border-width: 0 2px 0 0;
        padding: 2px 0 2px 2px;
    }

    .dojoDndItemOver {
        cursor: pointer;
    }
    .dj_gecko .dijitArrowButtonInner input,
    .dj_gecko input.dijitArrowButtonInner {
        -moz-user-focus: ignore;
    }
    .dijitFocused .dijitMenuItemShortcutKey {
        text-decoration: underline;
    }

    /* Dijit custom styling */
    .dijitBorderContainer {
        height: 350px;
    }
    .dijitTooltipContainer {
        background: #fff;
        border: 1px solid #ccc;
        border-radius: 6px;
    }
    .dijitContentPane {
        box-sizing: content-box;
        overflow: auto !important;
        /* Widgets like the data grid pass their scroll
    offset to the parent if there is not enough room to display a scroll bar
    in the widget itself, so do not hide the overflow. */
    }

    /* Global Bootstrap changes */

    /* Client defaults and helpers */
    .mx-dataview-content,
    .mx-scrollcontainer-wrapper:not(.mx-scrollcontainer-nested),
    .mx-tabcontainer-content,
    .mx-grid-content {
        -webkit-overflow-scrolling: touch;
    }
    html,
    body,
    #content {
        height: 100%;
    }
    #content > .mx-page {
        width: 100%;
        min-height: 100%;
    }

    .mx-left-aligned {
        text-align: left;
    }
    .mx-right-aligned {
        text-align: right;
    }
    .mx-center-aligned {
        text-align: center;
    }

    .mx-table {
        width: 100%;
    }
    .mx-table th,
    .mx-table td {
        padding: 8px;
        vertical-align: top;
    }
    .mx-table th.nopadding,
    .mx-table td.nopadding {
        padding: 0;
    }

    .mx-offscreen {
        /* When position relative is not set IE doesn't properly render when this class is removed
     * with the effect that elements are not displayed or are not clickable.
    */
        position: relative;
        height: 0;
        overflow: hidden;
    }

    .mx-ie-event-shield {
        position: absolute;
        top: 0;
        left: 0;
        width: 100%;
        height: 100%;
        z-index: -1;
    }

    .mx-swipe-navigation-progress {
        position: absolute;
        height: 54px;
        width: 54px;
        top: calc(50% - 27px);
        left: calc(50% - 27px);
        background: url(resources/swipe-progress.gif);
    }

    /* Bacause we use checkboxes without labels, align them with other widgets. */
    input[type="checkbox"] {
        margin: 9px 0;
    }

    .mx-checkbox input[type="checkbox"] {
        margin-left: 0;
        margin-right: 8px;
        position: static;
    }

    .form-vertical .form-group.mx-checkbox input[type="checkbox"] {
        display: block;
    }

    .form-vertical .form-group.mx-checkbox.label-after input[type="checkbox"] {
        display: inline-block;
    }

    .form-horizontal .form-group.no-columns {
        padding-left: 15px;
        padding-right: 15px;
    }

    .mx-radiobuttons.inline .radio {
        display: inline-block;
        margin-right: 20px;
    }

    .mx-radiobuttons .radio input[type="radio"] {
        /* Reset bootstrap rules */
        position: static;
        margin-right: 8px;
        margin-left: 0;
    }

    .mx-radiobuttons .radio label {
        /* Reset bootstrap rules */
        padding-left: 0;
    }

    .alert {
        margin-top: 8px;
        margin-bottom: 10px;
        white-space: pre-line;
    }

    //.mx-compound-control {
    //    display: flex;
    //}

    //.mx-compound-control button {
    //    margin-left: 5px;
    //}
    //
    //[dir="rtl"] .mx-compound-control button {
    //    margin-left: 0;
    //    margin-right: 5px;
    //}

    .mx-tooltip {
        margin: 10px;
    }
    .mx-tooltip-content {
        width: 400px;
        overflow-y: auto;
    }
    .mx-tooltip-prepare {
        height: 24px;
        padding: 8px;
        background: transparent url(resources/ttp.gif) no-repeat scroll center center;
    }
    .mx-tooltip-content .table th,
    .mx-tooltip-content .table td {
        padding: 2px 8px;
    }

    .mx-tabcontainer-pane {
        height: 100%;
    }
    .mx-tabcontainer-content.loading {
        min-height: 48px;
        background: url(resources/tabcontainer-loading.gif) no-repeat center center;
        background-size: 32px 32px;
    }
    .mx-tabcontainer-tabs {
        margin-bottom: 8px;
    }
    .mx-tabcontainer-tabs li {
        position: relative;
    }
    .mx-tabcontainer-indicator {
        position: absolute;
        background: #f2dede;
        border-radius: 8px;
        color: #b94a48;
        top: 0px;
        right: -5px;
        width: 16px;
        height: 16px;
        line-height: 16px;
        text-align: center;
        vertical-align: middle;
        font-size: 10px;
        font-weight: 600;
        z-index: 1; /* indicator should not hide behind other tab */
    }

    /* base structure */
    .mx-grid {
        padding: 8px;
        overflow: hidden; /* to prevent any margin from escaping grid and foobaring our size calculations */
    }
    .mx-grid-controlbar,
    .mx-grid-searchbar {
        display: flex;
        justify-content: space-between;
        flex-wrap: wrap;
    }
    .mx-grid-controlbar .mx-button,
    .mx-grid-search-controls .mx-button {
        margin-bottom: 8px;
    }

    .mx-grid-search-controls .mx-button + .mx-button,
    .mx-grid-controlbar .mx-button + .mx-button {
        margin-left: 0.3em;
    }

    [dir="rtl"] .mx-grid-search-controls .mx-button + .mx-button,
    [dir="rtl"] .mx-grid-controlbar .mx-button + .mx-button {
        margin-left: 0;
        margin-right: 0.3em;
    }

    .mx-grid-pagingbar,
    .mx-grid-search-controls {
        display: flex;
        white-space: nowrap;
        align-items: baseline;
        margin-left: auto;
    }

    .mx-grid-toolbar,
    .mx-grid-search-inputs {
        margin-right: 5px;
        flex: 1;
    }

    [dir="rtl"] .mx-grid-toolbar,
    [dir="rtl"] .mx-grid-search-inputs {
        margin-left: 5px;
        margin-right: 0px;
    }
    [dir="rtl"] .mx-grid-pagingbar,
    [dir="rtl"] .mx-grid-search-controls {
        margin-left: 0px;
        margin-right: auto;
    }

    .mx-grid-paging-status {
        padding: 0 8px 5px;
    }

    /* search fields */
    .mx-grid-search-item {
        display: inline-block;
        vertical-align: top;
        margin-bottom: 8px;
    }
    .mx-grid-search-label {
        width: 110px;
        padding: 0 5px;
        text-align: right;
        display: inline-block;
        vertical-align: top;
        overflow: hidden;
    }
    [dir="rtl"] .mx-grid-search-label {
        text-align: left;
    }
    .mx-grid-search-input {
        width: 150px;
        padding: 0 5px;
        display: inline-block;
        vertical-align: top;
    }
    .mx-grid-search-message {
        flex-basis: 100%;
    }

    /* widget combinations */
    .mx-dataview .mx-grid {
        border: 1px solid #ddd;
        border-radius: 3px;
    }

    .mx-calendar {
        z-index: 1000;
    }

    .mx-calendar-month-dropdown-options {
        position: absolute;
    }

    .mx-calendar,
    .mx-calendar-month-dropdown {
        user-select: none;
    }

    .mx-calendar-month-current {
        display: inline-block;
    }

    .mx-calendar-month-spacer {
        position: relative;
        height: 0px;
        overflow: hidden;
        visibility: hidden;
    }

    .mx-calendar,
    .mx-calendar-month-dropdown-options {
        border: 1px solid lightgrey;
        background-color: white;
    }

    .mx-datagrid tr {
        cursor: pointer;
    }

    .mx-datagrid tr.mx-datagrid-row-empty {
        cursor: default;
    }

    .mx-datagrid table {
        width: 100%;
        max-width: 100%;
        table-layout: fixed;
        margin-bottom: 0;
    }

    .mx-datagrid th,
    .mx-datagrid td {
        padding: 8px;
        line-height: 1.42857143;
        vertical-align: bottom;
        border: 1px solid #ddd;
    }

    /* head */
    .mx-datagrid th {
        position: relative; /* Required for the positioning of the column resizers */
        border-bottom-width: 2px;
    }
    .mx-datagrid-head-caption {
        overflow: hidden;
        white-space: nowrap;
    }
    .mx-datagrid-sort-icon {
        float: right;
        padding-left: 5px;
    }
    [dir="rtl"] .mx-datagrid-sort-icon {
        float: left;
        padding: 0 5px 0 0;
    }
    .mx-datagrid-column-resizer {
        position: absolute;
        top: 0;
        left: -6px;
        width: 10px;
        height: 100%;
        cursor: col-resize;
    }
    [dir="rtl"] .mx-datagrid-column-resizer {
        left: auto;
        right: -6px;
    }

    /* body */
    .mx-datagrid tbody tr:first-child td {
        border-top: none;
    }
    //.mx-datagrid tbody tr:nth-child(2n+1) td {
    //    background-color: #f9f9f9;
    //}
    .mx-datagrid tbody .selected td {
        background-color: #eee;
    }
    .mx-datagrid-data-wrapper {
        overflow: hidden;
        white-space: nowrap;
    }
    .mx-datagrid tbody img {
        max-width: 16px;
        max-height: 16px;
    }
    .mx-datagrid input,
    .mx-datagrid select,
    .mx-datagrid textarea {
        cursor: auto;
    }

    /* foot */
    .mx-datagrid tfoot th,
    .mx-datagrid tfoot td {
        padding: 3px 8px;
    }
    .mx-datagrid tfoot th {
        border-top: 1px solid #ddd;
    }
    .mx-datagrid.mx-content-loading .mx-content-loader {
        display: inline-block;
        width: 90%;
        animation: placeholderGradient 1s linear infinite;
        border-radius: 4px;
        background: #f5f5f5;
        background: repeating-linear-gradient(to right, #f5f5f5 0%, #f5f5f5 5%, #f9f9f9 50%, #f5f5f5 95%, #f5f5f5 100%);
        background-size: 200px 100px;
        animation-fill-mode: both;
    }
    @keyframes placeholderGradient {
        0% {
            background-position: 100px 0;
        }
        100% {
            background-position: -100px 0;
        }
    }

    .mx-datagrid-table-resizing th,
    .mx-datagrid-table-resizing td {
        cursor: col-resize !important;
    }

    .mx-templategrid-content-wrapper {
        display: table;
        width: 100%;
        border-collapse: collapse;
        box-sizing: border-box;
    }
    .mx-templategrid-row {
        display: table-row;
    }
    .mx-templategrid-item {
        padding: 5px;
        display: table-cell;
        border: 1px solid #ddd;
        cursor: pointer;
        box-sizing: border-box;
    }
    .mx-templategrid-empty {
        display: table-cell;
    }
    .mx-templategrid-item.selected {
        background-color: #f5f5f5;
    }
    .mx-templategrid-item .mx-table th,
    .mx-templategrid-item .mx-table td {
        padding: 2px 8px;
    }

    .mx-scrollcontainer-horizontal {
        width: 100%;
        display: table;
        table-layout: fixed;
    }
    .mx-scrollcontainer-horizontal > div {
        display: table-cell;
        vertical-align: top;
    }
    //.mx-scrollcontainer-wrapper {
    //    padding: 10px;
    //}
    .mx-scrollcontainer-nested {
        padding: 0;
    }
    .mx-scrollcontainer-fixed > .mx-scrollcontainer-middle > .mx-scrollcontainer-wrapper,
    .mx-scrollcontainer-fixed > .mx-scrollcontainer-left > .mx-scrollcontainer-wrapper,
    .mx-scrollcontainer-fixed > .mx-scrollcontainer-center > .mx-scrollcontainer-wrapper,
    .mx-scrollcontainer-fixed > .mx-scrollcontainer-right > .mx-scrollcontainer-wrapper {
        overflow: auto;
    }

    .mx-scrollcontainer-move-in {
        transition: left 250ms ease-out;
    }
    .mx-scrollcontainer-move-out {
        transition: left 250ms ease-in;
    }
    .mx-scrollcontainer-shrink .mx-scrollcontainer-toggleable {
        transition-property: width;
    }

    .mx-scrollcontainer-toggleable {
        background-color: #fff;
    }
    //.mx-scrollcontainer-slide > .mx-scrollcontainer-toggleable > .mx-scrollcontainer-wrapper {
    //    position: relative;
    //    z-index: 1;
    //    background-color: inherit;
    //}
    .mx-scrollcontainer-push {
        position: relative;
    }
    .mx-scrollcontainer-shrink > .mx-scrollcontainer-toggleable {
        overflow: hidden;
    }
    .mx-scrollcontainer-push.mx-scrollcontainer-open > div,
    .mx-scrollcontainer-slide.mx-scrollcontainer-open > div {
        pointer-events: none;
    }
    .mx-scrollcontainer-push.mx-scrollcontainer-open > .mx-scrollcontainer-toggleable,
    .mx-scrollcontainer-slide.mx-scrollcontainer-open > .mx-scrollcontainer-toggleable {
        pointer-events: auto;
    }

    .mx-navbar-item img,
    .mx-navbar-subitem img {
        height: 16px;
    }

    .mx-navigationtree .navbar-inner {
        padding-left: 0;
        padding-right: 0;
    }
    .mx-navigationtree ul {
        list-style: none;
    }
    //.mx-navigationtree ul li {
    //    border-bottom: 1px solid #dfe6ea;
    //}
    //.mx-navigationtree li:last-child {
    //    border-style: none;
    //}
    .mx-navigationtree a {
        display: block;
        padding: 5px 10px;
        color: #777;
        text-shadow: 0 1px 0 #fff;
        text-decoration: none;
    }
    .mx-navigationtree a.active {
        color: #fff;
        text-shadow: none;
        background: #3498db;
        border-radius: 3px;
    }
    .mx-navigationtree .mx-navigationtree-collapsed ul {
        display: none;
    }
    .mx-navigationtree ul {
        margin: 0;
        padding: 0;
    }
    //.mx-navigationtree ul li {
    //    padding: 5px 0;
    //}
    .mx-navigationtree ul li ul {
        padding: 0;
        margin-left: 10px;
    }
    .mx-navigationtree ul li ul li {
        margin-left: 8px;
        padding: 5px 0;
    }
    [dir="rtl"] .mx-navigationtree ul li ul li {
        margin-left: auto;
        margin-right: 8px;
    }
    .mx-navigationtree ul li ul li ul li {
        font-size: 10px;
        padding-top: 3px;
        padding-bottom: 3px;
    }
    .mx-navigationtree ul li ul li ul li img {
        vertical-align: top;
    }

    .mx-link img,
    .mx-button img {
        height: 16px;
    }
    .mx-link {
        padding: 6px 12px;
        display: inline-block;
        cursor: pointer;
    }

    .mx-groupbox {
        margin-bottom: 10px;
    }
    .mx-groupbox-header {
        margin: 0;
        padding: 10px 15px;
        color: #eee;
        background: #333;
        font-size: inherit;
        line-height: inherit;
        border-radius: 4px 4px 0 0;
    }
    .mx-groupbox-collapsible > .mx-groupbox-header {
        cursor: pointer;
    }
    .mx-groupbox.collapsed > .mx-groupbox-header {
        border-radius: 4px;
    }
    .mx-groupbox-body {
        padding: 8px;
        border: 1px solid #ddd;
        border-radius: 4px;
    }
    .mx-groupbox.collapsed > .mx-groupbox-body {
        display: none;
    }
    .mx-groupbox-header + .mx-groupbox-body {
        border-top: none;
        border-radius: 0 0 4px 4px;
    }
    .mx-groupbox-collapse-icon {
        float: right;
    }
    [dir="rtl"] .mx-groupbox-collapse-icon {
        float: left;
    }

    .mx-dataview {
        position: relative;
    }
    .mx-dataview-controls {
        padding: 19px 20px 12px;
        background-color: #f5f5f5;
        border-top: 1px solid #eee;
    }

    .mx-dataview-controls .mx-button {
        margin-bottom: 8px;
    }

    .mx-dataview-controls .mx-button + .mx-button {
        margin-left: 0.3em;
    }

    .mx-dataview-message {
        background: #fff;
        position: absolute;
        top: 0;
        right: 0;
        bottom: 0;
        left: 0;
    }
    .mx-dataview-message > div {
        display: table;
        width: 100%;
        height: 100%;
    }
    .mx-dataview-message > div > p {
        display: table-cell;
        text-align: center;
        vertical-align: middle;
    }

    /* Top-level data view in window is a special case, handle it as such. */
    .mx-window-view .mx-window-body {
        padding: 0;
    }
    .mx-window-view .mx-window-body > .mx-dataview > .mx-dataview-content,
    .mx-window-view .mx-window-body > .mx-placeholder > .mx-dataview > .mx-dataview-content {
        padding: 15px;
    }
    .mx-window-view .mx-window-body > .mx-dataview > .mx-dataview-controls,
    .mx-window-view .mx-window-body > .mx-placeholder > .mx-dataview > .mx-dataview-controls {
        border-radius: 0px 0px 6px 6px;
    }

    .mx-dialog {
        position: fixed;
        left: auto;
        right: auto;
        padding: 0;
        width: 500px;
        /* If the margin is set to auto, IE9 reports the calculated value of the
     * margin as the actual value. Other browsers will just report 0. Eliminate
     * this difference by setting margin to 0 for every browser. */
        margin: 0;
    }
    .mx-dialog-header {
        cursor: move;
    }
    .mx-dialog-body {
        overflow: auto;
    }

    .mx-window {
        position: fixed;
        left: auto;
        right: auto;
        padding: 0;
        width: 600px;
        /* If the margin is set to auto, IE9 reports the calculated value of the
     * margin as the actual value. Other browsers will just report 0. Eliminate
     * this difference by setting margin to 0 for every browser. */
        margin: 0;
    }
    .mx-window-content {
        height: 100%;
        overflow: hidden;
    }
    .mx-window-active .mx-window-header {
        background-color: #f5f5f5;
        border-radius: 6px 6px 0 0;
    }
    .mx-window-header {
        cursor: move;
    }
    .mx-window-body {
        overflow: auto;
    }

    .mx-dropdown-list * {
        cursor: pointer;
    }
    .mx-dropdown-list img {
        width: 35px;
        vertical-align: middle;
        margin-right: 10px;
    }
    [dir="rtl"] .mx-dropdown-list img {
        margin-left: 10px;
        margin-right: auto;
    }

    .mx-dropdown-list {
        padding: 0;
        list-style: none;
    }
    .mx-dropdown-list > li {
        padding: 5px 10px 10px;
        border: 1px #ddd;
        border-style: solid solid none;
        background-color: #fff;
    }
    .mx-dropdown-list > li:first-child {
        border-top-left-radius: 4px;
        border-top-right-radius: 4px;
    }
    .mx-dropdown-list > li:last-child {
        border-bottom-style: solid;
        border-bottom-left-radius: 4px;
        border-bottom-right-radius: 4px;
    }
    .mx-dropdown-list-striped > li:nth-child(2n + 1) {
        background: #f9f9f9;
    }
    .mx-dropdown-list > li:hover {
        background: #f5f5f5;
    }

    .mx-header {
        position: relative;
        padding: 9px;
        background: #333;
        text-align: center;
    }
    .mx-header-center {
        display: inline-block;
        color: #eee;
        line-height: 30px; /* height of buttons */
    }
    body[dir="ltr"] .mx-header-left,
    body[dir="rtl"] .mx-header-right {
        position: absolute;
        top: 9px;
        left: 9px;
    }
    body[dir="ltr"] .mx-header-right,
    body[dir="rtl"] .mx-header-left {
        position: absolute;
        top: 9px;
        right: 9px;
    }

    .mx-title {
        margin-bottom: 0px;
        margin-top: 0px;
    }

    .mx-listview {
        padding: 8px;
    }
    .mx-listview > ul {
        padding: 0px;
        list-style: none;
    }
    // .mx-listview > ul > li {
    //     padding: 5px 10px 10px;
    //     border: 1px #ddd;
    //     border-style: solid solid none;
    //     background-color: #fff;
    //     outline: none;
    // }
    // .mx-listview > ul > li:first-child {
    //     border-top-left-radius: 4px;
    //     border-top-right-radius: 4px;
    // }
    // .mx-listview > ul > li:last-child {
    //     border-bottom-style: solid;
    //     border-bottom-left-radius: 4px;
    //     border-bottom-right-radius: 4px;
    // }
    //.mx-listview li:nth-child(2n+1) {
    //    background: #f9f9f9;
    //}
    //.mx-listview li:nth-child(2n+1):hover {
    //    background: #f5f5f5;
    //}
    .mx-listview > ul > li.selected {
        //    background: #eee;
    }
    .mx-listview-clickable > ul > li {
        cursor: pointer;
    }
    .mx-listview-empty {
        color: #999;
        text-align: center;
    }
    .mx-listview .mx-listview-loading {
        padding: 10px;
        line-height: 0;
        text-align: center;
    }
    .mx-listview-searchbar {
        display: flex;
        margin-bottom: 10px;
    }
    .mx-listview-searchbar > input {
        width: 100%;
    }
    .mx-listview-searchbar > button {
        margin-left: 5px;
    }
    [dir="rtl"] .mx-listview-searchbar > button {
        margin-left: 0;
        margin-right: 5px;
    }
    .mx-listview-selection {
        display: table-cell;
        vertical-align: middle;
        padding: 0 15px 0 5px;
    }
    [dir="rtl"] .mx-listview-selection {
        padding: 0 5px 0 15px;
    }
    .mx-listview-selectable .mx-listview-content {
        display: table-cell;
        vertical-align: middle;
        width: 100%;
    }
    .mx-listview .selected {
        background: #def;
    }
    .mx-listview .mx-table th,
    .mx-listview .mx-table td {
        padding: 2px;
    }

    .mx-login .form-control {
        margin-top: 10px;
    }

    .mx-menubar {
        padding: 8px;
    }
    .mx-menubar-icon {
        height: 16px;
    }
    .mx-menubar-more-icon {
        display: inline-block;
        width: 16px;
        height: 16px;
        background: url(resources/menubar-more-icon.png) no-repeat center center;
        background-size: 16px 16px;
        vertical-align: middle;
    }

    .mx-navigationlist {
        padding: 8px;
    }
    .mx-navigationlist li:hover,
    .mx-navigationlist li:focus,
    .mx-navigationlist li.active {
        color: #fff;
        background-color: #3498db;
    }
    .mx-navigationlist * {
        cursor: pointer;
    }
    .mx-navigationlist .table th,
    .mx-navigationlist .table td {
        padding: 2px;
    }

    .mx-progress {
        position: fixed;
        top: 30%;
        left: 0;
        right: 0;
        margin: auto;
        width: 250px;
        max-width: 90%;
        background: #333;
        opacity: 0.8;
        z-index: 5000;
        border-radius: 4px;
        padding: 20px 15px;
        transition: opacity 0.4s ease-in-out;
    }
    .mx-progress-hidden {
        opacity: 0;
    }
    .mx-progress-message {
        color: #fff;
        text-align: center;
        margin-bottom: 15px;
    }
    .mx-progress-empty .mx-progress-message {
        display: none;
    }
    .mx-progress-indicator {
        width: 70px;
        height: 10px;
        margin: auto;
        background: url(resources/progress-indicator.gif);
    }

    .mx-reload-notification {
        position: fixed;
        z-index: 1001;
        top: 0;
        width: 100%;
        padding: 1rem;

        border: 1px solid hsl(200, 96%, 41%);
        background-color: hsl(200, 96%, 44%);

        box-shadow: 0 5px 20px rgba(1, 37, 55, 0.16);
        color: white;

        text-align: center;
        font-size: 14px;
    }

    .mx-resizer-n,
    .mx-resizer-s {
        position: absolute;
        left: 0;
        width: 100%;
        height: 10px;
    }
    .mx-resizer-n {
        top: -5px;
        cursor: n-resize;
    }
    .mx-resizer-s {
        bottom: -5px;
        cursor: s-resize;
    }

    .mx-resizer-e,
    .mx-resizer-w {
        position: absolute;
        top: 0;
        width: 10px;
        height: 100%;
    }
    .mx-resizer-e {
        right: -5px;
        cursor: e-resize;
    }
    .mx-resizer-w {
        left: -5px;
        cursor: w-resize;
    }

    .mx-resizer-nw,
    .mx-resizer-ne,
    .mx-resizer-sw,
    .mx-resizer-se {
        position: absolute;
        width: 20px;
        height: 20px;
    }

    .mx-resizer-nw,
    .mx-resizer-ne {
        top: -5px;
    }
    .mx-resizer-sw,
    .mx-resizer-se {
        bottom: -5px;
    }
    .mx-resizer-nw,
    .mx-resizer-sw {
        left: -5px;
    }
    .mx-resizer-ne,
    .mx-resizer-se {
        right: -5px;
    }

    .mx-resizer-nw {
        cursor: nw-resize;
    }
    .mx-resizer-ne {
        cursor: ne-resize;
    }
    .mx-resizer-sw {
        cursor: sw-resize;
    }
    .mx-resizer-se {
        cursor: se-resize;
    }

    .mx-text {
        white-space: pre-line;
    }

    .mx-textarea textarea {
        resize: none;
        overflow-y: hidden;
    }
    .mx-textarea .mx-textarea-noresize {
        height: auto;
        resize: vertical;
        overflow-y: auto;
    }
    .mx-textarea .mx-textarea-counter {
        font-size: smaller;
    }
    .mx-textarea .form-control-static {
        white-space: pre-line;
    }

    .mx-underlay {
        position: fixed;
        top: 0;
        width: 100%;
        height: 100%;
        z-index: 1000;
        opacity: 0.5;
        background-color: #333;
    }

    .mx-imagezoom {
        position: absolute;
        display: table;
        width: 100%;
        height: 100%;
        background-color: #999;
    }
    .mx-imagezoom-wrapper {
        display: table-cell;
        text-align: center;
        vertical-align: middle;
    }
    .mx-imagezoom-image {
        max-width: none;
    }

    .mx-dropdown li {
        padding: 3px 20px;
        cursor: pointer;
    }
    .mx-dropdown label {
        padding: 0;
        color: #333;
        white-space: nowrap;
        cursor: pointer;
    }
    .mx-dropdown input {
        margin: 0;
        vertical-align: middle;
        cursor: pointer;
    }
    .mx-dropdown .selected {
        background: #f8f8f8;
    }
    //.mx-selectbox {
    //    text-align: left;
    //}
    //.mx-selectbox-caret-wrapper {
    //    float: right;
    //    height: 100%;
    //}

    .mx-demouserswitcher {
        position: fixed;
        top: 0;
        right: 0;
        width: 360px;
        height: 100%;
        z-index: 20000;
        box-shadow: -1px 0 5px rgba(28, 59, 86, 0.2);
    }
    .mx-demouserswitcher-content {
        padding: 80px 40px 20px;
        height: 100%;
        color: #387ea2;
        font-size: 14px;
        overflow: auto;
        background: url(resources/switcher.png) top right no-repeat #1b3149;
        /* background-attachement local is not supported on IE8
     * when this is part of background the complete background is ignored */
        background-attachment: local;
    }
    .mx-demouserswitcher ul {
        padding: 0;
        margin-top: 25px;
        list-style-type: none;
        border-top: 1px solid #496076;
    }
    .mx-demouserswitcher a {
        display: block;
        padding: 10px 0;
        color: #387ea2;
        border-bottom: 1px solid #496076;
    }
    .mx-demouserswitcher h2 {
        margin: 20px 0 5px;
        color: #5bc4fe;
        font-size: 28px;
    }
    .mx-demouserswitcher h3 {
        margin: 0 0 2px;
        color: #5bc4fe;
        font-size: 18px;
        font-weight: normal;
        overflow: hidden;
        white-space: nowrap;
        text-overflow: ellipsis;
    }
    .mx-demouserswitcher .active h3 {
        color: #11efdb;
    }
    .mx-demouserswitcher p {
        margin-bottom: 0;
    }
    .mx-demouserswitcher-toggle {
        position: absolute;
        top: 25%;
        left: -35px;
        width: 35px;
        height: 38px;
        margin-top: -40px;
        cursor: pointer;
        border-top-left-radius: 3px;
        border-bottom-left-radius: 3px;
        box-shadow: -1px 0 5px rgba(28, 59, 86, 0.2);
        background: url(resources/switcher-toggle.png) center center no-repeat #1b3149;
    }

    /* master details screen for mobile */
    .mx-master-detail-screen {
        top: 0;
        left: 0;
        overflow: auto;
        width: 100%;
        height: 100%;
        position: absolute;
        background-color: white;
        will-change: transform;
    }

    .mx-master-detail-screen .mx-master-detail-details {
        padding: 15px;
    }

    .mx-master-detail-screen-header {
        position: relative;
        overflow: auto;
        border-bottom: 1px solid #ccc;
        background-color: #f7f7f7;
    }

    .mx-master-detail-screen-header-caption {
        text-align: center;
        font-size: 17px;
        line-height: 24px;
        font-weight: 600;
    }

    .mx-master-detail-screen-header-close {
        position: absolute;
        left: 0;
        top: 0;
        height: 100%;
        width: 50px;
        border: none;
        background: transparent;
        color: #007aff;
    }

    body[dir="rtl"] .mx-master-detail-screen-header-close {
        right: 0;
        left: auto;
    }

    .mx-master-detail-screen-header-close::before {
        content: "\2039";
        font-size: 52px;
        line-height: 24px;
    }

    /* classes for content page */
    .mx-master-detail-content-fix {
        height: 100vh;
        overflow: hidden;
    }

    .mx-master-detail-content-hidden {
        transform: translateX(-200%);
    }

    body[dir="rtl"] .mx-master-detail-content-hidden {
        transform: translateX(200%);
    }
    .reportingReport {
        padding: 5px;
        border: 1px solid #ddd;
        border-radius: 3px;
    }

    .reportingReportParameter th {
        text-align: right;
    }

    .reportingDateRange table {
        width: 100%;
        table-layout: fixed;
    }
    .reportingDateRange th {
        padding: 5px;
        text-align: right;
        background-color: #eee;
    }
    .reportingDateRange td {
        padding: 5px;
    }

    .mx-reportmatrix table {
        width: 100%;
        max-width: 100%;
        table-layout: fixed;
        margin-bottom: 0;
    }

    .mx-reportmatrix th,
    .mx-reportmatrix td {
        padding: 8px;
        line-height: 1.42857143;
        vertical-align: bottom;
        border: 1px solid #ddd;
    }

    .mx-reportmatrix tbody tr:first-child td {
        border-top: none;
    }

    .mx-reportmatrix tbody tr:nth-child(2n + 1) td {
        background-color: #f9f9f9;
    }

    .mx-reportmatrix tbody img {
        max-width: 16px;
        max-height: 16px;
    }

    @media all and (-ms-high-contrast: none), (-ms-high-contrast: active) {
        .dijitInline {
            zoom: 1; /* set hasLayout:true to mimic inline-block */
            display: inline; /* don't use .dj_ie since that increases the priority */
            vertical-align: auto; /* makes TextBox,Button line up w/native counterparts on IE6 */
        }

        .dj_ie6 .dijitComboBox .dijitInputContainer,
        .dijitInputContainer {
            zoom: 1;
        }

        .dijitRight {
            /* Right part of a 3-element border */
            display: inline; /* IE7 sizes to outer size w/o this */
        }

        .dijitButtonNode {
            vertical-align: auto;
        }

        .dijitTextBox {
            overflow: hidden; /* #6027, #6067 */
        }

        .dijitPlaceHolder {
            filter: ""; /* make this show up in IE6 after the rendering of the widget */
        }

        .dijitValidationTextBoxError input.dijitValidationInner,
        .dijitSelect input,
        .dijitTextBox input.dijitArrowButtonInner {
            text-indent: 0 !important;
            letter-spacing: -5em !important;
            text-align: right !important;
        }

        .dj_a11y input.dijitValidationInner,
        .dj_a11y input.dijitArrowButtonInner {
            text-align: left !important;
        }

        .dijitSpinner .dijitSpinnerButtonContainer .dijitUpArrowButton {
            bottom: 50%; /* otherwise (on some machines) top arrow icon too close to splitter border (IE6/7) */
        }

        .dijitTabContainerTop-tabs .dijitTab,
        .dijitTabContainerBottom-tabs .dijitTab {
            zoom: 1; /* set hasLayout:true to mimic inline-block */
            display: inline; /* don't use .dj_ie since that increases the priority */
        }

        .dojoDndHorizontal .dojoDndItem {
            /* make contents of horizontal container be side by side, rather than vertical */
            display: inline;
        }
    }
}

/* WARNING: IE9 limits nested imports to three levels deep: http://jorgealbaladejo.com/2011/05/28/internet-explorer-limits-nested-import-css-statements */

/* dijit base */

/* mendix base */

/* widgets */

/* reporting */

/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9kb2pvL2Rpaml0L3RoZW1lcy9kaWppdC5jc3MiLCJ3ZWJwYWNrOi8vLy4vbXh1aS91aS9iYXNlLmNzcyIsIndlYnBhY2s6Ly8vLi9teHVpL3VpL2Zvcm1zLmNzcyIsIndlYnBhY2s6Ly8vLi9teHVpL3VpL3dpZGdldC9Ub29sdGlwLmNzcyIsIndlYnBhY2s6Ly8vLi9teHVpL3VpL3dpZGdldC9UYWJDb250YWluZXIuY3NzIiwid2VicGFjazovLy8uL214dWkvdWkvd2lkZ2V0L19HcmlkLmNzcyIsIndlYnBhY2s6Ly8vLi9teHVpL3VpL3dpZGdldC9DYWxlbmRhci5jc3MiLCJ3ZWJwYWNrOi8vLy4vbXh1aS91aS93aWRnZXQvRGF0YUdyaWQuY3NzIiwid2VicGFjazovLy8uL214dWkvdWkvd2lkZ2V0L1RlbXBsYXRlR3JpZC5jc3MiLCJ3ZWJwYWNrOi8vLy4vbXh1aS91aS93aWRnZXQvU2Nyb2xsQ29udGFpbmVyLmNzcyIsIndlYnBhY2s6Ly8vLi9teHVpL3VpL3dpZGdldC9OYXZiYXIuY3NzIiwid2VicGFjazovLy8uL214dWkvdWkvd2lkZ2V0L05hdmlnYXRpb25UcmVlLmNzcyIsIndlYnBhY2s6Ly8vLi9teHVpL3VpL3dpZGdldC9CdXR0b24uY3NzIiwid2VicGFjazovLy8uL214dWkvdWkvd2lkZ2V0L0dyb3VwQm94LmNzcyIsIndlYnBhY2s6Ly8vLi9teHVpL3VpL3dpZGdldC9EYXRhVmlldy5jc3MiLCJ3ZWJwYWNrOi8vLy4vbXh1aS91aS93aWRnZXQvRGlhbG9nLmNzcyIsIndlYnBhY2s6Ly8vLi9teHVpL3VpL3dpZGdldC9XaW5kb3cuY3NzIiwid2VicGFjazovLy8uL214dWkvdWkvd2lkZ2V0L0Ryb3BEb3duLmNzcyIsIndlYnBhY2s6Ly8vLi9teHVpL3VpL3dpZGdldC9IZWFkZXIuY3NzIiwid2VicGFjazovLy8uL214dWkvdWkvd2lkZ2V0L1RpdGxlLmNzcyIsIndlYnBhY2s6Ly8vLi9teHVpL3VpL3dpZGdldC9MaXN0Vmlldy5jc3MiLCJ3ZWJwYWNrOi8vLy4vbXh1aS91aS93aWRnZXQvTG9naW5EaWFsb2cuY3NzIiwid2VicGFjazovLy8uL214dWkvdWkvd2lkZ2V0L01lbnVCYXIuY3NzIiwid2VicGFjazovLy8uL214dWkvdWkvd2lkZ2V0L05hdmlnYXRpb25MaXN0LmNzcyIsIndlYnBhY2s6Ly8vLi9teHVpL3VpL3dpZGdldC9Qcm9ncmVzcy5jc3MiLCJ3ZWJwYWNrOi8vLy4vbXh1aS91aS93aWRnZXQvUmVsb2FkTm90aWZpY2F0aW9uLmNzcyIsIndlYnBhY2s6Ly8vLi9teHVpL3VpL3dpZGdldC9SZXNpemFibGUuY3NzIiwid2VicGFjazovLy8uL214dWkvdWkvd2lkZ2V0L1RleHQuY3NzIiwid2VicGFjazovLy8uL214dWkvdWkvd2lkZ2V0L1RleHRBcmVhLmNzcyIsIndlYnBhY2s6Ly8vLi9teHVpL3VpL3dpZGdldC9VbmRlcmxheS5jc3MiLCJ3ZWJwYWNrOi8vLy4vbXh1aS91aS93aWRnZXQvSW1hZ2Vab29tLmNzcyIsIndlYnBhY2s6Ly8vLi9teHVpL3VpL3dpZGdldC9TZWxlY3RCb3guY3NzIiwid2VicGFjazovLy8uL214dWkvdWkvd2lkZ2V0L0RlbW9Vc2VyU3dpdGNoZXIuY3NzIiwid2VicGFjazovLy8uL214dWkvdWkvd2lkZ2V0L01hc3RlckRldGFpbC5jc3MiLCJ3ZWJwYWNrOi8vLy4vcmVwb3J0aW5nL3VpL3dpZGdldC9SZXBvcnQuY3NzIiwid2VicGFjazovLy8uL3JlcG9ydGluZy91aS93aWRnZXQvUmVwb3J0UGFyYW1ldGVyLmNzcyIsIndlYnBhY2s6Ly8vLi9yZXBvcnRpbmcvdWkvd2lkZ2V0L0RhdGVSYW5nZS5jc3MiLCJ3ZWJwYWNrOi8vLy4vcmVwb3J0aW5nL3VpL3dpZGdldC9SZXBvcnRNYXRyaXguY3NzIiwid2VicGFjazovLy8uL214dWkvdWkvbXh1aS5jc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7Ozs7QUFJQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx1QkFBdUI7QUFDdkI7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHNCQUFzQjtBQUN0QixVQUFVO0FBQ1YsaUJBQWlCO0FBQ2pCO0FBQ0E7QUFDQTtBQUNBLHVCQUF1QjtBQUN2Qjs7QUFFQTtBQUNBO0FBQ0E7QUFDQSx5QkFBeUI7QUFDekI7O0FBRUE7QUFDQTtBQUNBLG9CQUFvQjtBQUNwQixvQkFBb0I7QUFDcEI7QUFDQTtBQUNBLCtCQUErQjtBQUMvQjs7QUFFQTtBQUNBO0FBQ0EsMkJBQTJCO0FBQzNCLG9CQUFvQjtBQUNwQjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx3QkFBd0I7QUFDeEI7QUFDQTtBQUNBO0FBQ0Esd0JBQXdCO0FBQ3hCO0FBQ0Esa0NBQWtDO0FBQ2xDOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsdUJBQXVCO0FBQ3ZCLDJCQUEyQjtBQUMzQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxpQkFBaUI7QUFDakI7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLGtCQUFrQjtBQUNsQjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwwQ0FBMEM7QUFDMUM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0I7QUFDaEI7O0FBRUE7QUFDQSw0QkFBNEI7QUFDNUI7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGtDQUFrQztBQUNsQztBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsZ0JBQWdCO0FBQ2hCOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0JBQWdCO0FBQ2hCOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLG9CQUFvQjtBQUNwQjtBQUNBOztBQUVBO0FBQ0E7QUFDQSxpQkFBaUI7QUFDakI7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxnQkFBZ0I7QUFDaEI7QUFDQTtBQUNBLHFCQUFxQjtBQUNyQjs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxzQkFBc0I7QUFDdEI7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsbUJBQW1CO0FBQ25CLGFBQWE7QUFDYjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0I7QUFDaEI7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQSx1QkFBdUI7QUFDdkI7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQSxzQkFBc0I7QUFDdEI7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxlQUFlO0FBQ2Y7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUI7QUFDckIscUJBQXFCO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CO0FBQ25CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLG9DQUFvQztBQUNwQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsOEJBQThCO0FBQzlCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMkJBQTJCO0FBQzNCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDRCQUE0QjtBQUM1QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYztBQUNkO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVk7QUFDWjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLGVBQWU7QUFDZjtBQUNBO0FBQ0E7QUFDQSxtQkFBbUI7QUFDbkIsd0JBQXdCO0FBQ3hCLFdBQVc7QUFDWDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLHlDQUF5QztBQUN4RDs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLHdCQUF3QixvQkFBb0I7O0FBRTVDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWU7QUFDZjs7QUFFQTtBQUNBO0FBQ0EsK0JBQStCO0FBQy9CLFlBQVk7QUFDWjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGdCQUFnQjtBQUNoQjs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVk7QUFDWjs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0EsZ0JBQWdCO0FBQ2hCO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHdCQUF3QjtBQUN4QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpREFBaUQ7QUFDakQsMEJBQTBCO0FBQzFCOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFjO0FBQ2Q7QUFDQTtBQUNBO0FBQ0EsZ0JBQWdCO0FBQ2hCO0FBQ0E7QUFDQSxtQkFBbUI7QUFDbkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsZUFBZTtBQUNmOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0EsYUFBYTtBQUNiLGFBQWEsd0RBQXdEO0FBQ3JFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0Esd0JBQXdCO0FBQ3hCOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLHFDQUFxQztBQUNyQzs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxlQUFlO0FBQ2Ysb0JBQW9CO0FBQ3BCO0FBQ0E7QUFDQSxpQkFBaUI7QUFDakI7QUFDQTtBQUNBO0FBQ0EscUJBQXFCO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQSxpQkFBaUI7QUFDakI7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxlQUFlO0FBQ2Ysc0JBQXNCO0FBQ3RCO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDhCQUE4QjtBQUM5Qjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUI7QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUI7QUFDakI7O0FBRUE7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBO0FBQ0EsV0FBVztBQUNYO0FBQ0E7QUFDQSxZQUFZO0FBQ1o7OztBQUdBO0FBQ0E7QUFDQTtBQUNBLHNCQUFzQjtBQUN0QixVQUFVO0FBQ1YsaUJBQWlCO0FBQ2pCOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSwrQkFBK0I7QUFDL0I7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsZ0JBQWdCO0FBQ2hCO0FBQ0E7O0FBRUE7QUFDQSxhQUFhO0FBQ2I7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxrQkFBa0IsNEJBQTRCO0FBQzlDOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0JBQWtCO0FBQ2xCO0FBQ0E7QUFDQSxtQkFBbUI7QUFDbkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLG9CQUFvQjtBQUNwQjs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxrQkFBa0I7QUFDbEI7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLHdCQUF3QjtBQUN4QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxrQkFBa0I7QUFDbEI7QUFDQTtBQUNBLFlBQVk7QUFDWjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTs7QUFFQTtBQUNBLGdCQUFnQjtBQUNoQjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlDQUFpQztBQUNqQztBQUNBO0FBQ0EsNEJBQTRCO0FBQzVCO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esd0JBQXdCO0FBQ3hCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLHFCQUFxQjtBQUNyQjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxpQkFBaUI7O0FBRWpCO0FBQ0E7QUFDQSwyQkFBMkI7QUFDM0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDdnNFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsOEJBQThCO0FBQzlCO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1DQUFtQztBQUNuQzs7O0FDOUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUN6REE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwrQ0FBK0M7QUFDL0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNmQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUNBQW1DO0FBQ25DO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZTtBQUNmOztBQzdCQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUI7QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ3JGQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQzFCQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLHVCQUF1QjtBQUN2QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRLDhCQUE4QjtBQUN0QyxVQUFVLCtCQUErQjtBQUN6Qzs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUN0R0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUN6QkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNyREE7QUFDQTtBQUNBO0FBQ0E7OztBQ0hBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDdkRBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDUEE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ25DQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUMvQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNoQkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDeEJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNyQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esc0JBQXNCO0FBQ3RCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ3RCQTtBQUNBO0FBQ0E7QUFDQTs7QUNIQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDN0VBO0FBQ0E7QUFDQTs7QUNGQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1DQUFtQztBQUNuQztBQUNBO0FBQ0E7O0FDYkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDZkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUNBQW1DO0FBQ25DOztBQy9CQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUNmQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ3JFQTtBQUNBO0FBQ0E7O0FDRkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ2RBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNSQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDZEE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDeEJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQ0FBbUM7QUFDbkM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1DQUFtQztBQUNuQzs7QUMvREE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxDO0FDaEVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ05BO0FBQ0E7QUFDQTs7QUNGQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDWEE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOzs7O0FDekJBOztBQUVBOztBQUVBOztBQUVBOztBQUVBIiwiZmlsZSI6Im14dWkvdWkvbXh1aS5jc3MiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuXHRFc3NlbnRpYWwgc3R5bGVzIHRoYXQgdGhlbWVzIGNhbiBpbmhlcml0LlxuXHRJbiBvdGhlciB3b3Jkcywgd29ya3MgYnV0IGRvZXNuJ3QgbG9vayBncmVhdC5cbiovXG5cblxuXG4vKioqKlxuXHRcdEdFTkVSSUMgUElFQ0VTXG4gKioqKi9cblxuLmRpaml0UmVzZXQge1xuXHQvKiBVc2UgdGhpcyBzdHlsZSB0byBudWxsIG91dCBwYWRkaW5nLCBtYXJnaW4sIGJvcmRlciBpbiB5b3VyIHRlbXBsYXRlIGVsZW1lbnRzXG5cdFx0c28gdGhhdCBwYWdlIHNwZWNpZmljIHN0eWxlcyBkb24ndCBicmVhayB0aGVtLlxuXHRcdC0gVXNlIGluIGFsbCBUQUJMRSwgVFIgYW5kIFREIHRhZ3MuXG5cdCovXG5cdG1hcmdpbjowO1xuXHRib3JkZXI6MDtcblx0cGFkZGluZzowO1xuXHRmb250OiBpbmhlcml0O1xuXHRsaW5lLWhlaWdodDpub3JtYWw7XG5cdGNvbG9yOiBpbmhlcml0O1xufVxuLmRqX2ExMXkgLmRpaml0UmVzZXQge1xuXHQtbW96LWFwcGVhcmFuY2U6IG5vbmU7IC8qIHJlbW92ZSBwcmVkZWZpbmVkIGhpZ2gtY29udHJhc3Qgc3R5bGluZyBpbiBGaXJlZm94ICovXG59XG5cbi5kaWppdElubGluZSB7XG5cdC8qICBUbyBpbmxpbmUgYmxvY2sgZWxlbWVudHMuXG5cdFx0U2ltaWxhciB0byBJbmxpbmVCb3ggYmVsb3csIGJ1dCB0aGlzIGhhcyBmZXdlciBzaWRlLWVmZmVjdHMgaW4gTW96LlxuXHRcdEFsc28sIGFwcGFyZW50bHkgd29ya3Mgb24gYSBESVYgYXMgd2VsbCBhcyBhIEZJRUxEU0VULlxuXHQqL1xuXHRkaXNwbGF5OmlubGluZS1ibG9jaztcdFx0XHQvKiB3ZWJraXQgYW5kIEZGMyAqL1xuXHQjem9vbTogMTsgLyogc2V0IGhhc0xheW91dDp0cnVlIHRvIG1pbWljIGlubGluZS1ibG9jayAqL1xuXHQjZGlzcGxheTppbmxpbmU7IC8qIGRvbid0IHVzZSAuZGpfaWUgc2luY2UgdGhhdCBpbmNyZWFzZXMgdGhlIHByaW9yaXR5ICovXG5cdGJvcmRlcjowO1xuXHRwYWRkaW5nOjA7XG5cdHZlcnRpY2FsLWFsaWduOm1pZGRsZTtcblx0I3ZlcnRpY2FsLWFsaWduOiBhdXRvO1x0LyogbWFrZXMgVGV4dEJveCxCdXR0b24gbGluZSB1cCB3L25hdGl2ZSBjb3VudGVycGFydHMgb24gSUU2ICovXG59XG5cbnRhYmxlLmRpaml0SW5saW5lIHtcblx0LyogVG8gaW5saW5lIHRhYmxlcyB3aXRoIGEgZ2l2ZW4gd2lkdGggc2V0ICovXG5cdGRpc3BsYXk6aW5saW5lLXRhYmxlO1xuXHRib3gtc2l6aW5nOiBjb250ZW50LWJveDsgLW1vei1ib3gtc2l6aW5nOiBjb250ZW50LWJveDtcbn1cblxuLmRpaml0SGlkZGVuIHtcblx0LyogVG8gaGlkZSB1bnNlbGVjdGVkIHBhbmVzIGluIFN0YWNrQ29udGFpbmVyIGV0Yy4gKi9cblx0cG9zaXRpb246IGFic29sdXRlOyAvKiByZW1vdmUgZnJvbSBub3JtYWwgZG9jdW1lbnQgZmxvdyB0byBzaW11bGF0ZSBkaXNwbGF5OiBub25lICovXG5cdHZpc2liaWxpdHk6IGhpZGRlbjsgLyogaGlkZSBlbGVtZW50IGZyb20gdmlldywgYnV0IGRvbid0IGJyZWFrIHNjcm9sbGluZywgc2VlICMxODYxMiAqL1xufVxuLmRpaml0SGlkZGVuICoge1xuXHR2aXNpYmlsaXR5OiBoaWRkZW4gIWltcG9ydGFudDsgLyogaGlkZSB2aXNpYmlsaXR5OnZpc2libGUgZGVzY2VuZGFudHMgb2YgY2xhc3M9ZGlqaXRIaWRkZW4gbm9kZXMsIHNlZSAjMTg3OTkgKi9cbn1cblxuLmRpaml0VmlzaWJsZSB7XG5cdC8qIFRvIHNob3cgc2VsZWN0ZWQgcGFuZSBpbiBTdGFja0NvbnRhaW5lciBldGMuICovXG5cdGRpc3BsYXk6IGJsb2NrICFpbXBvcnRhbnQ7XHQvKiBvdmVycmlkZSB1c2VyJ3MgZGlzcGxheTpub25lIHNldHRpbmcgdmlhIHN0eWxlIHNldHRpbmcgb3IgaW5kaXJlY3RseSB2aWEgY2xhc3MgKi9cblx0cG9zaXRpb246IHJlbGF0aXZlO1x0XHRcdC8qIHRvIHN1cHBvcnQgc2V0dGluZyB3aWR0aC9oZWlnaHQsIHNlZSAjMjAzMyAqL1xuXHR2aXNpYmlsaXR5OiB2aXNpYmxlO1xufVxuXG4uZGpfaWU2IC5kaWppdENvbWJvQm94IC5kaWppdElucHV0Q29udGFpbmVyLFxuLmRpaml0SW5wdXRDb250YWluZXIge1xuXHQvKiBmb3IgcG9zaXRpb25pbmcgb2YgcGxhY2VIb2xkZXIgKi9cblx0I3pvb206IDE7XG5cdG92ZXJmbG93OiBoaWRkZW47XG5cdGZsb2F0OiBub25lICFpbXBvcnRhbnQ7IC8qIG5lZWRlZCB0byBzcXVlZXplIHRoZSBJTlBVVCBpbiAqL1xuXHRwb3NpdGlvbjogcmVsYXRpdmU7XG59XG4uZGpfaWU3IC5kaWppdElucHV0Q29udGFpbmVyIHtcblx0ZmxvYXQ6IGxlZnQgIWltcG9ydGFudDsgLyogbmVlZGVkIGJ5IElFIHRvIHNxdWVlemUgdGhlIElOUFVUIGluICovXG5cdGNsZWFyOiBsZWZ0O1xuXHRkaXNwbGF5OiBpbmxpbmUtYmxvY2sgIWltcG9ydGFudDsgLyogdG8gZml4IHdyb25nIHRleHQgYWxpZ25tZW50IGluIHRleHRkaXI9cnRsIHRleHQgYm94ICovXG59XG5cbi5kal9pZSAuZGlqaXRTZWxlY3QgaW5wdXQsXG4uZGpfaWUgaW5wdXQuZGlqaXRUZXh0Qm94LFxuLmRqX2llIC5kaWppdFRleHRCb3ggaW5wdXQge1xuXHRmb250LXNpemU6IDEwMCU7XG59XG4uZGlqaXRTZWxlY3QgLmRpaml0QnV0dG9uVGV4dCB7XG5cdGZsb2F0OiBsZWZ0O1xuXHR2ZXJ0aWNhbC1hbGlnbjogdG9wO1xufVxuVEFCTEUuZGlqaXRTZWxlY3Qge1xuXHRwYWRkaW5nOiAwICFpbXBvcnRhbnQ7IC8qIG1lc3NlcyB1cCBib3JkZXIgYWxpZ25tZW50ICovXG5cdGJvcmRlci1jb2xsYXBzZTogc2VwYXJhdGU7IC8qIHNvIGpzZmlkZGxlIHdvcmtzIHdpdGggTm9ybWFsaXplZCBDU1MgY2hlY2tlZCAqL1xufVxuLmRpaml0VGV4dEJveCAuZGlqaXRTcGlubmVyQnV0dG9uQ29udGFpbmVyLFxuLmRpaml0VGV4dEJveCAuZGlqaXRBcnJvd0J1dHRvbkNvbnRhaW5lcixcbi5kaWppdFZhbGlkYXRpb25UZXh0Qm94IC5kaWppdFZhbGlkYXRpb25Db250YWluZXIge1xuXHRmbG9hdDogcmlnaHQ7XG5cdHRleHQtYWxpZ246IGNlbnRlcjtcbn1cbi5kaWppdFNlbGVjdCBpbnB1dC5kaWppdElucHV0RmllbGQsXG4uZGlqaXRUZXh0Qm94IGlucHV0LmRpaml0SW5wdXRGaWVsZCB7XG5cdC8qIG92ZXJyaWRlIHVucmVhc29uYWJsZSB1c2VyIHN0eWxpbmcgb2YgYnV0dG9ucyBhbmQgaWNvbnMgKi9cblx0cGFkZGluZy1sZWZ0OiAwICFpbXBvcnRhbnQ7XG5cdHBhZGRpbmctcmlnaHQ6IDAgIWltcG9ydGFudDtcbn1cbi5kaWppdFZhbGlkYXRpb25UZXh0Qm94IC5kaWppdFZhbGlkYXRpb25Db250YWluZXIge1xuXHRkaXNwbGF5OiBub25lO1xufVxuXG4uZGlqaXRUZWVueSB7XG5cdGZvbnQtc2l6ZToxcHg7XG5cdGxpbmUtaGVpZ2h0OjFweDtcbn1cblxuLmRpaml0T2ZmU2NyZWVuIHsgLyogdGhlc2UgY2xhc3MgYXR0cmlidXRlcyBzaG91bGQgc3VwZXJzZWRlIGFueSBpbmxpbmUgcG9zaXRpb25pbmcgc3R5bGUgKi9cblx0cG9zaXRpb246IGFic29sdXRlICFpbXBvcnRhbnQ7XG5cdGxlZnQ6IC0xMDAwMHB4ICFpbXBvcnRhbnQ7XG5cdHRvcDogLTEwMDAwcHggIWltcG9ydGFudDtcbn1cblxuLypcbiAqIFBvcHVwIGl0ZW1zIGhhdmUgYSB3cmFwcGVyIGRpdiAoZGlqaXRQb3B1cClcbiAqIHdpdGggdGhlIHJlYWwgcG9wdXAgaW5zaWRlLCBhbmQgbWF5YmUgYW4gaWZyYW1lIHRvb1xuICovXG4uZGlqaXRQb3B1cCB7XG5cdHBvc2l0aW9uOiBhYnNvbHV0ZTtcblx0YmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG5cdG1hcmdpbjogMDtcblx0Ym9yZGVyOiAwO1xuXHRwYWRkaW5nOiAwO1xuXHQtd2Via2l0LW92ZXJmbG93LXNjcm9sbGluZzogdG91Y2g7XG59XG5cbi5kaWppdFBvc2l0aW9uT25seSB7XG5cdC8qIE51bGwgb3V0IGFsbCBwb3NpdGlvbi1yZWxhdGVkIHByb3BlcnRpZXMgKi9cblx0cGFkZGluZzogMCAhaW1wb3J0YW50O1xuXHRib3JkZXI6IDAgIWltcG9ydGFudDtcblx0YmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQgIWltcG9ydGFudDtcblx0YmFja2dyb3VuZC1pbWFnZTogbm9uZSAhaW1wb3J0YW50O1xuXHRoZWlnaHQ6IGF1dG8gIWltcG9ydGFudDtcblx0d2lkdGg6IGF1dG8gIWltcG9ydGFudDtcbn1cblxuLmRpaml0Tm9uUG9zaXRpb25Pbmx5IHtcblx0LyogTnVsbCBwb3NpdGlvbi1yZWxhdGVkIHByb3BlcnRpZXMgKi9cblx0ZmxvYXQ6IG5vbmUgIWltcG9ydGFudDtcblx0cG9zaXRpb246IHN0YXRpYyAhaW1wb3J0YW50O1xuXHRtYXJnaW46IDAgMCAwIDAgIWltcG9ydGFudDtcblx0dmVydGljYWwtYWxpZ246IG1pZGRsZSAhaW1wb3J0YW50O1xufVxuXG4uZGlqaXRCYWNrZ3JvdW5kSWZyYW1lIHtcblx0LyogaWZyYW1lIHVzZWQgdG8gcHJldmVudCBwcm9ibGVtcyB3aXRoIFBERiBvciBvdGhlciBhcHBsZXRzIG92ZXJsYXlpbmcgbWVudXMgZXRjICovXG5cdHBvc2l0aW9uOiBhYnNvbHV0ZTtcblx0bGVmdDogMDtcblx0dG9wOiAwO1xuXHR3aWR0aDogMTAwJTtcblx0aGVpZ2h0OiAxMDAlO1xuXHR6LWluZGV4OiAtMTtcblx0Ym9yZGVyOiAwO1xuXHRwYWRkaW5nOiAwO1xuXHRtYXJnaW46IDA7XG59XG5cbi5kaWppdERpc3BsYXlOb25lIHtcblx0LyogaGlkZSBzb21ldGhpbmcuICBVc2UgdGhpcyBhcyBhIGNsYXNzIHJhdGhlciB0aGFuIGVsZW1lbnQuc3R5bGUgc28gYW5vdGhlciBjbGFzcyBjYW4gb3ZlcnJpZGUgKi9cblx0ZGlzcGxheTpub25lICFpbXBvcnRhbnQ7XG59XG5cbi5kaWppdENvbnRhaW5lciB7XG5cdC8qIGZvciBhbGwgbGF5b3V0IGNvbnRhaW5lcnMgKi9cblx0b3ZlcmZsb3c6IGhpZGRlbjtcdC8qIG5lZWQgb24gSUUgc28gc29tZXRoaW5nIGNhbiBiZSByZWR1Y2VkIGluIHNpemUsIGFuZCBzbyBzY3JvbGxiYXJzIGFyZW4ndCB0ZW1wb3JhcmlseSBkaXNwbGF5ZWQgd2hlbiByZXNpemluZyAqL1xufVxuXG4vKioqKlxuXHRcdEExMVlcbiAqKioqL1xuLmRqX2ExMXkgLmRpaml0SWNvbixcbi5kal9hMTF5IGRpdi5kaWppdEFycm93QnV0dG9uSW5uZXIsIC8qIGlzIHRoaXMgb25seSBmb3IgU3Bpbm5lcj8gIGlmIHNvLCBpdCBzaG91bGQgYmUgZGVsZXRlZCAqL1xuLmRqX2ExMXkgc3Bhbi5kaWppdEFycm93QnV0dG9uSW5uZXIsXG4uZGpfYTExeSBpbWcuZGlqaXRBcnJvd0J1dHRvbklubmVyLFxuLmRqX2ExMXkgLmRpaml0Q2FsZW5kYXJJbmNyZW1lbnRDb250cm9sLFxuLmRqX2ExMXkgLmRpaml0VHJlZUV4cGFuZG8ge1xuXHQvKiBoaWRlIGljb24gbm9kZXMgaW4gaGlnaCBjb250cmFzdCBtb2RlOyB3aGVuIG5lY2Vzc2FyeSB0aGV5IHdpbGwgYmUgcmVwbGFjZWQgYnkgY2hhcmFjdGVyIGVxdWl2YWxlbnRzXG5cdCAqIGV4Y2VwdGlvbiBmb3IgaW5wdXQuZGlqaXRBcnJvd0J1dHRvbklubmVyLCBiZWNhdXNlIHRoZSBpY29uIGFuZCBjaGFyYWN0ZXIgYXJlIGNvbnRyb2xsZWQgYnkgdGhlIHNhbWUgbm9kZSAqL1xuXHRkaXNwbGF5OiBub25lO1xufVxuLmRpaml0U3Bpbm5lciBkaXYuZGlqaXRBcnJvd0J1dHRvbklubmVyIHtcblx0ZGlzcGxheTogYmxvY2s7IC8qIG92ZXJyaWRlIHByZXZpb3VzIHJ1bGUgKi9cbn1cblxuLmRqX2ExMXkgLmRpaml0QTExeVNpZGVBcnJvdyB7XG5cdGRpc3BsYXk6IGlubGluZSAhaW1wb3J0YW50OyAvKiBkaXNwbGF5IHRleHQgaW5zdGVhZCAqL1xuXHRjdXJzb3I6IHBvaW50ZXI7XG59XG5cbi8qXG4gKiBTaW5jZSB3ZSBjYW4ndCB1c2Ugc2hhZGluZyBpbiBhMTF5IG1vZGUsIGFuZCBzaW5jZSB0aGUgdW5kZXJsaW5lIGluZGljYXRlcyB0b2RheSdzIGRhdGUsXG4gKiB1c2UgYSBib3JkZXIgdG8gc2hvdyB0aGUgc2VsZWN0ZWQgZGF0ZS5cbiAqIEF2b2lkIHNjcmVlbiBqaXR0ZXIgd2hlbiBzd2l0Y2hpbmcgc2VsZWN0ZWQgZGF0ZSBieSBjb21wZW5zYXRpbmcgZm9yIHRoZSBzZWxlY3RlZCBub2RlJ3NcbiAqIGJvcmRlciB3L3BhZGRpbmcgb24gb3RoZXIgbm9kZXMuXG4gKi9cbi5kal9hMTF5IC5kaWppdENhbGVuZGFyRGF0ZUxhYmVsIHtcblx0cGFkZGluZzogMXB4O1xuXHRib3JkZXI6IDBweCAhaW1wb3J0YW50O1xufVxuLmRqX2ExMXkgLmRpaml0Q2FsZW5kYXJTZWxlY3RlZERhdGUgLmRpaml0Q2FsZW5kYXJEYXRlTGFiZWwge1xuXHRib3JkZXItc3R5bGU6IHNvbGlkICFpbXBvcnRhbnQ7XG5cdGJvcmRlci13aWR0aDogMXB4ICFpbXBvcnRhbnQ7XG5cdHBhZGRpbmc6IDA7XG59XG4uZGpfYTExeSAuZGlqaXRDYWxlbmRhckRhdGVUZW1wbGF0ZSB7XG5cdHBhZGRpbmctYm90dG9tOiAwLjFlbSAhaW1wb3J0YW50O1x0Lyogb3RoZXJ3aXNlIGJvdHRvbSBib3JkZXIgZG9lc24ndCBhcHBlYXIgb24gSUUgKi9cblx0Ym9yZGVyOiAwcHggIWltcG9ydGFudDtcbn1cbi5kal9hMTF5IC5kaWppdEJ1dHRvbk5vZGUge1xuXHRib3JkZXI6IGJsYWNrIG91dHNldCBtZWRpdW0gIWltcG9ydGFudDtcblxuXHQvKiBJbiBjbGFybywgaG92ZXJpbmcgYSB0b29sYmFyIGJ1dHRvbiByZWR1Y2VzIHBhZGRpbmcgYW5kIGFkZHMgYSBib3JkZXIuXG5cdCAqIE5vdCBuZWVkZWQgaW4gYTExeSBtb2RlIHNpbmNlIFRvb2xiYXIgYnV0dG9ucyBhbHdheXMgaGF2ZSBhIGJvcmRlci5cblx0ICovXG5cdHBhZGRpbmc6IDAgIWltcG9ydGFudDtcbn1cbi5kal9hMTF5IC5kaWppdEFycm93QnV0dG9uIHtcblx0cGFkZGluZzogMCAhaW1wb3J0YW50O1xufVxuXG4uZGpfYTExeSAuZGlqaXRCdXR0b25Db250ZW50cyB7XG5cdG1hcmdpbjogMC4xNWVtOyAvKiBNYXJnaW4gbmVlZGVkIHRvIG1ha2UgZm9jdXMgb3V0bGluZSB2aXNpYmxlICovXG59XG5cbi5kal9hMTF5IC5kaWppdFRleHRCb3hSZWFkT25seSAuZGlqaXRJbnB1dEZpZWxkLFxuLmRqX2ExMXkgLmRpaml0VGV4dEJveFJlYWRPbmx5IC5kaWppdEJ1dHRvbk5vZGUge1xuXHRib3JkZXItc3R5bGU6IG91dHNldCFpbXBvcnRhbnQ7XG5cdGJvcmRlci13aWR0aDogbWVkaXVtIWltcG9ydGFudDtcblx0Ym9yZGVyLWNvbG9yOiAjOTk5ICFpbXBvcnRhbnQ7XG5cdGNvbG9yOiM5OTkgIWltcG9ydGFudDtcbn1cblxuLyogYnV0dG9uIGlubmVyIGNvbnRlbnRzIC0gbGFiZWxzLCBpY29ucyBldGMuICovXG4uZGlqaXRCdXR0b25Ob2RlICoge1xuXHR2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xufVxuLmRpaml0U2VsZWN0IC5kaWppdEFycm93QnV0dG9uSW5uZXIsXG4uZGlqaXRCdXR0b25Ob2RlIC5kaWppdEFycm93QnV0dG9uSW5uZXIge1xuXHQvKiB0aGUgYXJyb3cgaWNvbiBub2RlICovXG5cdGJhY2tncm91bmQ6IG5vLXJlcGVhdCBjZW50ZXI7XG5cdHdpZHRoOiAxMnB4O1xuXHRoZWlnaHQ6IDEycHg7XG5cdGRpcmVjdGlvbjogbHRyOyAvKiBuZWVkZWQgYnkgSUUvUlRMICovXG59XG5cbi8qKioqXG5cdDMtZWxlbWVudCBib3JkZXJzOiAgKCBkaWppdExlZnQgKyBkaWppdFN0cmV0Y2ggKyBkaWppdFJpZ2h0IClcblx0VGhlc2Ugd2VyZSBhZGRlZCBmb3Igcm91bmRlZCBjb3JuZXJzIG9uIGRpaml0LmZvcm0uKkJ1dHRvbiBidXQgbmV2ZXIgYWN0dWFsbHkgdXNlZC5cbiAqKioqL1xuXG4uZGlqaXRMZWZ0IHtcblx0LyogTGVmdCBwYXJ0IG9mIGEgMy1lbGVtZW50IGJvcmRlciAqL1xuXHRiYWNrZ3JvdW5kLXBvc2l0aW9uOmxlZnQgdG9wO1xuXHRiYWNrZ3JvdW5kLXJlcGVhdDpuby1yZXBlYXQ7XG59XG5cbi5kaWppdFN0cmV0Y2gge1xuXHQvKiBNaWRkbGUgKHN0cmV0Y2h5KSBwYXJ0IG9mIGEgMy1lbGVtZW50IGJvcmRlciAqL1xuXHR3aGl0ZS1zcGFjZTpub3dyYXA7XHRcdFx0LyogTU9XOiBtb3ZlIHNvbWV3aGVyZSBlbHNlICovXG5cdGJhY2tncm91bmQtcmVwZWF0OnJlcGVhdC14O1xufVxuXG4uZGlqaXRSaWdodCB7XG5cdC8qIFJpZ2h0IHBhcnQgb2YgYSAzLWVsZW1lbnQgYm9yZGVyICovXG5cdCNkaXNwbGF5OmlubGluZTtcdFx0XHRcdC8qIElFNyBzaXplcyB0byBvdXRlciBzaXplIHcvbyB0aGlzICovXG5cdGJhY2tncm91bmQtcG9zaXRpb246cmlnaHQgdG9wO1xuXHRiYWNrZ3JvdW5kLXJlcGVhdDpuby1yZXBlYXQ7XG59XG5cbi8qIEJ1dHRvbnMgKi9cbi5kal9nZWNrbyAuZGpfYTExeSAuZGlqaXRCdXR0b25EaXNhYmxlZCAuZGlqaXRCdXR0b25Ob2RlIHtcblx0b3BhY2l0eTogMC41O1xufVxuXG4uZGlqaXRUb2dnbGVCdXR0b24sXG4uZGlqaXRCdXR0b24sXG4uZGlqaXREcm9wRG93bkJ1dHRvbixcbi5kaWppdENvbWJvQnV0dG9uIHtcblx0Lyogb3V0c2lkZSBvZiBidXR0b24gKi9cblx0bWFyZ2luOiAwLjJlbTtcblx0dmVydGljYWwtYWxpZ246IG1pZGRsZTtcbn1cblxuLmRpaml0QnV0dG9uQ29udGVudHMge1xuXHRkaXNwbGF5OiBibG9jaztcdFx0LyogdG8gbWFrZSBmb2N1cyBib3JkZXIgcmVjdGFuZ3VsYXIgKi9cbn1cbnRkLmRpaml0QnV0dG9uQ29udGVudHMge1xuXHRkaXNwbGF5OiB0YWJsZS1jZWxsO1x0LyogYnV0IGRvbid0IGFmZmVjdCBTZWxlY3QsIENvbWJvQnV0dG9uICovXG59XG5cbi5kaWppdEJ1dHRvbk5vZGUgaW1nIHtcblx0LyogbWFrZSB0ZXh0IGFuZCBpbWFnZXMgbGluZSB1cCBjbGVhbmx5ICovXG5cdHZlcnRpY2FsLWFsaWduOm1pZGRsZTtcblx0LyptYXJnaW4tYm90dG9tOi4yZW07Ki9cbn1cblxuLmRpaml0VG9vbGJhciAuZGlqaXRDb21ib0J1dHRvbiB7XG5cdC8qIGJlY2F1c2UgVG9vbGJhciBvbmx5IGRyYXdzIGEgYm9yZGVyIGFyb3VuZCB0aGUgaG92ZXJlZCB0aGluZyAqL1xuXHRib3JkZXItY29sbGFwc2U6IHNlcGFyYXRlO1xufVxuXG4uZGlqaXRUb29sYmFyIC5kaWppdFRvZ2dsZUJ1dHRvbixcbi5kaWppdFRvb2xiYXIgLmRpaml0QnV0dG9uLFxuLmRpaml0VG9vbGJhciAuZGlqaXREcm9wRG93bkJ1dHRvbixcbi5kaWppdFRvb2xiYXIgLmRpaml0Q29tYm9CdXR0b24ge1xuXHRtYXJnaW46IDA7XG59XG5cbi5kaWppdFRvb2xiYXIgLmRpaml0QnV0dG9uQ29udGVudHMge1xuXHQvKiBqdXN0IGJlY2F1c2UgaXQgdXNlZCB0byBiZSB0aGlzIHdheSAqL1xuXHRwYWRkaW5nOiAxcHggMnB4O1xufVxuXG5cbi5kal93ZWJraXQgLmRpaml0VG9vbGJhciAuZGlqaXREcm9wRG93bkJ1dHRvbiB7XG5cdHBhZGRpbmctbGVmdDogMC4zZW07XG59XG4uZGpfZ2Vja28gLmRpaml0VG9vbGJhciAuZGlqaXRCdXR0b25Ob2RlOjotbW96LWZvY3VzLWlubmVyIHtcblx0cGFkZGluZzowO1xufVxuXG4uZGlqaXRTZWxlY3Qge1xuXHRib3JkZXI6MXB4IHNvbGlkIGdyYXk7XG59XG4uZGlqaXRCdXR0b25Ob2RlIHtcblx0LyogTm9kZSB0aGF0IGlzIGFjdGluZyBhcyBhIGJ1dHRvbiAtLSBtYXkgb3IgbWF5IG5vdCBiZSBhIEJVVFRPTiBlbGVtZW50ICovXG5cdGJvcmRlcjoxcHggc29saWQgZ3JheTtcblx0bWFyZ2luOjA7XG5cdGxpbmUtaGVpZ2h0Om5vcm1hbDtcblx0dmVydGljYWwtYWxpZ246IG1pZGRsZTtcblx0I3ZlcnRpY2FsLWFsaWduOiBhdXRvO1xuXHR0ZXh0LWFsaWduOmNlbnRlcjtcblx0d2hpdGUtc3BhY2U6IG5vd3JhcDtcbn1cbi5kal93ZWJraXQgLmRpaml0U3Bpbm5lciAuZGlqaXRTcGlubmVyQnV0dG9uQ29udGFpbmVyIHtcblx0LyogYXBwYXJlbnQgV2ViS2l0IGJ1ZyB3aGVyZSBtZXNzaW5nIHdpdGggdGhlIGZvbnQgY291cGxlZCB3aXRoIGxpbmUtaGVpZ2h0Om5vcm1hbCBYIDIgKGRpaml0UmVzZXQgJiBkaWppdEJ1dHRvbk5vZGUpXG5cdGNhbiBiZSBkaWZmZXJlbnQgdGhhbiBqdXN0IGEgc2luZ2xlIGxpbmUtaGVpZ2h0Om5vcm1hbCwgdmlzaWJsZSBpbiBJbmxpbmVFZGl0Qm94L1NwaW5uZXIgKi9cblx0bGluZS1oZWlnaHQ6aW5oZXJpdDtcbn1cbi5kaWppdFRleHRCb3ggLmRpaml0QnV0dG9uTm9kZSB7XG5cdGJvcmRlci13aWR0aDogMDtcbn1cblxuLmRpaml0U2VsZWN0LFxuLmRpaml0U2VsZWN0ICosXG4uZGlqaXRCdXR0b25Ob2RlLFxuLmRpaml0QnV0dG9uTm9kZSAqIHtcblx0Y3Vyc29yOiBwb2ludGVyO1xuXHQtd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6IHRyYW5zcGFyZW50O1xufVxuXG4uZGpfaWUgLmRpaml0QnV0dG9uTm9kZSB7XG5cdC8qIGVuc3VyZSBoYXNMYXlvdXQgKi9cblx0em9vbTogMTtcbn1cblxuLmRqX2llIC5kaWppdEJ1dHRvbk5vZGUgYnV0dG9uIHtcblx0Lypcblx0XHRkaXNndXN0aW5nIGhhY2sgdG8gZ2V0IHJpZCBvZiBzcHVyaW91cyBwYWRkaW5nIGFyb3VuZCBidXR0b24gZWxlbWVudHNcblx0XHRvbiBJRS4gTVNJRSBpcyB0cnVseSB0aGUgd2ViJ3MgYm9hdCBhbmNob3IuXG5cdCovXG5cdG92ZXJmbG93OiB2aXNpYmxlO1xufVxuXG5kaXYuZGlqaXRBcnJvd0J1dHRvbiB7XG5cdGZsb2F0OiByaWdodDtcbn1cblxuLyoqKioqKlxuXHRUZXh0Qm94IHJlbGF0ZWQuXG5cdEV2ZXJ5dGhpbmcgdGhhdCBoYXMgYW4gPGlucHV0PlxuKioqKioqKi9cblxuLmRpaml0VGV4dEJveCB7XG5cdGJvcmRlcjogc29saWQgYmxhY2sgMXB4O1xuXHQjb3ZlcmZsb3c6IGhpZGRlbjsgLyogIzYwMjcsICM2MDY3ICovXG5cdHdpZHRoOiAxNWVtO1x0LyogbmVlZCB0byBzZXQgZGVmYXVsdCBzaXplIG9uIG91dGVyIG5vZGUgc2luY2UgaW5uZXIgbm9kZXMgc2F5IDxpbnB1dCBzdHlsZT1cIndpZHRoOjEwMCVcIj4gYW5kIDx0ZCB3aWR0aD0xMDAlPi4gIHVzZXIgY2FuIG92ZXJyaWRlICovXG5cdHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG59XG5cbi5kaWppdFRleHRCb3hSZWFkT25seSxcbi5kaWppdFRleHRCb3hEaXNhYmxlZCB7XG5cdGNvbG9yOiBncmF5O1xufVxuLmRqX3NhZmFyaSAuZGlqaXRUZXh0Qm94RGlzYWJsZWQgaW5wdXQge1xuXHRjb2xvcjogI0IwQjBCMDsgLyogYmVjYXVzZSBTYWZhcmkgbGlnaHRlbnMgZGlzYWJsZWQgaW5wdXQvdGV4dGFyZWEgbm8gbWF0dGVyIHdoYXQgY29sb3IgeW91IHNwZWNpZnkgKi9cbn1cbi5kal9zYWZhcmkgdGV4dGFyZWEuZGlqaXRUZXh0QXJlYURpc2FibGVkIHtcblx0Y29sb3I6ICMzMzM7IC8qIGJlY2F1c2UgU2FmYXJpIGxpZ2h0ZW5zIGRpc2FibGVkIGlucHV0L3RleHRhcmVhIG5vIG1hdHRlciB3aGF0IGNvbG9yIHlvdSBzcGVjaWZ5ICovXG59XG4uZGpfZ2Vja28gLmRpaml0VGV4dEJveFJlYWRPbmx5IGlucHV0LmRpaml0SW5wdXRGaWVsZCwgLyogZGlzYWJsZSBhcnJvdyBhbmQgdmFsaWRhdGlvbiBwcmVzZW50YXRpb24gaW5wdXRzIGJ1dCBhbGxvdyByZWFsIGlucHV0IGZvciB0ZXh0IHNlbGVjdGlvbiAqL1xuLmRqX2dlY2tvIC5kaWppdFRleHRCb3hEaXNhYmxlZCBpbnB1dCB7XG5cdC1tb3otdXNlci1pbnB1dDogbm9uZTsgLyogcHJldmVudCBmb2N1cyBvZiBkaXNhYmxlZCB0ZXh0Ym94IGJ1dHRvbnMgKi9cbn1cblxuLmRpaml0UGxhY2VIb2xkZXIge1xuXHQvKiBoaW50IHRleHQgdGhhdCBhcHBlYXJzIGluIGEgdGV4dGJveCB1bnRpbCB1c2VyIHN0YXJ0cyB0eXBpbmcgKi9cblx0Y29sb3I6ICNBQUFBQUE7XG5cdGZvbnQtc3R5bGU6IGl0YWxpYztcblx0cG9zaXRpb246IGFic29sdXRlO1xuXHR0b3A6IDA7XG5cdGxlZnQ6IDA7XG5cdCNmaWx0ZXI6IFwiXCI7IC8qIG1ha2UgdGhpcyBzaG93IHVwIGluIElFNiBhZnRlciB0aGUgcmVuZGVyaW5nIG9mIHRoZSB3aWRnZXQgKi9cblx0d2hpdGUtc3BhY2U6IG5vd3JhcDtcblx0cG9pbnRlci1ldmVudHM6IG5vbmU7ICAgLyogc28gY3V0L3Bhc3RlIGNvbnRleHQgbWVudSBzaG93cyB1cCB3aGVuIHJpZ2h0IGNsaWNraW5nICovXG59XG5cbi5kaWppdFRpbWVUZXh0Qm94IHtcblx0d2lkdGg6IDhlbTtcbn1cblxuLyogcnVsZXMgZm9yIHdlYmtpdCB0byBkZWFsIHdpdGggZnV6enkgYmx1ZSBmb2N1cyBib3JkZXIgKi9cbi5kaWppdFRleHRCb3ggaW5wdXQ6Zm9jdXMge1xuXHRvdXRsaW5lOiBub25lO1x0LyogYmx1ZSBmdXp6eSBsaW5lIGxvb2tzIHdyb25nIG9uIGNvbWJvYm94IG9yIHNvbWV0aGluZyB3L3ZhbGlkYXRpb24gaWNvbiBzaG93aW5nICovXG59XG4uZGlqaXRUZXh0Qm94Rm9jdXNlZCB7XG5cdG91dGxpbmU6IDVweCAtd2Via2l0LWZvY3VzLXJpbmctY29sb3I7XG59XG5cbi5kaWppdFNlbGVjdCBpbnB1dCxcbi5kaWppdFRleHRCb3ggaW5wdXQge1xuXHRmbG9hdDogbGVmdDsgLyogbmVlZGVkIGJ5IElFIHRvIHJlbW92ZSBzZWNyZXQgbWFyZ2luICovXG59XG4uZGpfaWU2IGlucHV0LmRpaml0VGV4dEJveCxcbi5kal9pZTYgLmRpaml0VGV4dEJveCBpbnB1dCB7XG5cdGZsb2F0OiBub25lO1xufVxuLmRpaml0SW5wdXRJbm5lciB7XG5cdC8qIGZvciB3aGVuIGFuIDxpbnB1dD4gaXMgZW1iZWRkZWQgaW5zaWRlIGFuIGlubGluZS1ibG9jayA8ZGl2PiB3aXRoIGEgc2l6ZSBhbmQgYm9yZGVyICovXG5cdGJvcmRlcjowICFpbXBvcnRhbnQ7XG5cdGJhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnQgIWltcG9ydGFudDtcblx0d2lkdGg6MTAwJSAhaW1wb3J0YW50O1xuXHQvKiBJRSBkaXNsaWtlcyBob3Jpem9udGFsIHR3ZWFraW5nIGNvbWJpbmVkIHdpdGggd2lkdGg6MTAwJSBzbyBwdW5pc2ggZXZlcnlvbmUgZm9yIGNvbnNpc3RlbmN5ICovXG5cdHBhZGRpbmctbGVmdDogMCAhaW1wb3J0YW50O1xuXHRwYWRkaW5nLXJpZ2h0OiAwICFpbXBvcnRhbnQ7XG5cdG1hcmdpbi1sZWZ0OiAwICFpbXBvcnRhbnQ7XG5cdG1hcmdpbi1yaWdodDogMCAhaW1wb3J0YW50O1xufVxuLmRqX2ExMXkgLmRpaml0VGV4dEJveCBpbnB1dCB7XG5cdG1hcmdpbjogMCAhaW1wb3J0YW50O1xufVxuLmRpaml0VmFsaWRhdGlvblRleHRCb3hFcnJvciBpbnB1dC5kaWppdFZhbGlkYXRpb25Jbm5lcixcbi5kaWppdFNlbGVjdCBpbnB1dCxcbi5kaWppdFRleHRCb3ggaW5wdXQuZGlqaXRBcnJvd0J1dHRvbklubmVyIHtcblx0LyogPGlucHV0PiB1c2VkIHRvIGRpc3BsYXkgYXJyb3cgaWNvbi92YWxpZGF0aW9uIGljb24sIG9yIGluIGFycm93IGNoYXJhY3RlciBpbiBoaWdoIGNvbnRyYXN0IG1vZGUuXG5cdCAqIFRoZSBjc3MgYmVsb3cgaXMgYSB0cmljayB0byBoaWRlIHRoZSBjaGFyYWN0ZXIgaW4gbm9uLWhpZ2gtY29udHJhc3QgbW9kZVxuXHQgKi9cblx0dGV4dC1pbmRlbnQ6IC0yZW0gIWltcG9ydGFudDtcblx0ZGlyZWN0aW9uOiBsdHIgIWltcG9ydGFudDtcblx0dGV4dC1hbGlnbjogbGVmdCAhaW1wb3J0YW50O1xuXHRoZWlnaHQ6IGF1dG8gIWltcG9ydGFudDtcblx0I3RleHQtaW5kZW50OiAwICFpbXBvcnRhbnQ7XG5cdCNsZXR0ZXItc3BhY2luZzogLTVlbSAhaW1wb3J0YW50O1xuXHQjdGV4dC1hbGlnbjogcmlnaHQgIWltcG9ydGFudDtcbn1cbi5kal9pZSAuZGlqaXRTZWxlY3QgaW5wdXQsXG4uZGpfaWUgLmRpaml0VGV4dEJveCBpbnB1dCxcbi5kal9pZSBpbnB1dC5kaWppdFRleHRCb3gge1xuXHRvdmVyZmxvdy15OiB2aXNpYmxlOyAvKiBpbnB1dHMgbmVlZCBoZWxwIGV4cGFuZGluZyB3aGVuIHBhZGRpbmcgaXMgYWRkZWQgb3IgbGluZS1oZWlnaHQgaXMgYWRqdXN0ZWQgKi9cblx0bGluZS1oZWlnaHQ6IG5vcm1hbDsgLyogc3RyaWN0IG1vZGUgKi9cbn1cbi5kaWppdFNlbGVjdCAuZGlqaXRTZWxlY3RMYWJlbCBzcGFuIHtcblx0bGluZS1oZWlnaHQ6IDEwMCU7XG59XG4uZGpfaWUgLmRpaml0U2VsZWN0IC5kaWppdFNlbGVjdExhYmVsIHtcblx0bGluZS1oZWlnaHQ6IG5vcm1hbDtcbn1cbi5kal9pZTYgLmRpaml0U2VsZWN0IC5kaWppdFNlbGVjdExhYmVsLFxuLmRqX2llNyAuZGlqaXRTZWxlY3QgLmRpaml0U2VsZWN0TGFiZWwsXG4uZGpfaWU4IC5kaWppdFNlbGVjdCAuZGlqaXRTZWxlY3RMYWJlbCxcbi5kal9pZXF1aXJrcyAuZGlqaXRTZWxlY3QgLmRpaml0U2VsZWN0TGFiZWwsXG4uZGlqaXRTZWxlY3QgdGQsXG4uZGpfaWU2IC5kaWppdFNlbGVjdCBpbnB1dCxcbi5kal9pZXF1aXJrcyAuZGlqaXRTZWxlY3QgaW5wdXQsXG4uZGpfaWU2IC5kaWppdFNlbGVjdCAuZGlqaXRWYWxpZGF0aW9uQ29udGFpbmVyLFxuLmRqX2llNiAuZGlqaXRUZXh0Qm94IGlucHV0LFxuLmRqX2llNiBpbnB1dC5kaWppdFRleHRCb3gsXG4uZGpfaWVxdWlya3MgLmRpaml0VGV4dEJveCBpbnB1dC5kaWppdFZhbGlkYXRpb25Jbm5lcixcbi5kal9pZXF1aXJrcyAuZGlqaXRUZXh0Qm94IGlucHV0LmRpaml0QXJyb3dCdXR0b25Jbm5lcixcbi5kal9pZXF1aXJrcyAuZGlqaXRUZXh0Qm94IGlucHV0LmRpaml0U3Bpbm5lckJ1dHRvbklubmVyLFxuLmRqX2llcXVpcmtzIC5kaWppdFRleHRCb3ggaW5wdXQuZGlqaXRJbnB1dElubmVyLFxuLmRqX2llcXVpcmtzIGlucHV0LmRpaml0VGV4dEJveCB7XG5cdGxpbmUtaGVpZ2h0OiAxMDAlOyAvKiBJRTcgcHJvYmxlbSB3aGVyZSB0aGUgaWNvbiBpcyB2ZXJ0aWNhbGx5IHdheSB0b28gbG93IHcvbyB0aGlzICovXG59XG4uZGpfYTExeSBpbnB1dC5kaWppdFZhbGlkYXRpb25Jbm5lcixcbi5kal9hMTF5IGlucHV0LmRpaml0QXJyb3dCdXR0b25Jbm5lciB7XG5cdC8qIChpbiBoaWdoIGNvbnRyYXN0IG1vZGUpIHJldmVydCBydWxlcyBmcm9tIGFib3ZlIHNvIGNoYXJhY3RlciBkaXNwbGF5cyAqL1xuXHR0ZXh0LWluZGVudDogMCAhaW1wb3J0YW50O1xuXHR3aWR0aDogMWVtICFpbXBvcnRhbnQ7XG5cdCN0ZXh0LWFsaWduOiBsZWZ0ICFpbXBvcnRhbnQ7XG5cdGNvbG9yOiBibGFjayAhaW1wb3J0YW50O1xufVxuLmRpaml0VmFsaWRhdGlvblRleHRCb3hFcnJvciAuZGlqaXRWYWxpZGF0aW9uQ29udGFpbmVyIHtcblx0ZGlzcGxheTogaW5saW5lO1xuXHRjdXJzb3I6IGRlZmF1bHQ7XG59XG5cbi8qIENvbWJvQm94ICYgU3Bpbm5lciAqL1xuXG4uZGlqaXRTcGlubmVyIC5kaWppdFNwaW5uZXJCdXR0b25Db250YWluZXIsXG4uZGlqaXRDb21ib0JveCAuZGlqaXRBcnJvd0J1dHRvbkNvbnRhaW5lciB7XG5cdC8qIGRpdmlkaW5nIGxpbmUgYmV0d2VlbiBpbnB1dCBhcmVhIGFuZCB1cC9kb3duIGJ1dHRvbihzKSBmb3IgQ29tYm9Cb3ggYW5kIFNwaW5uZXIgKi9cblx0Ym9yZGVyLXdpZHRoOiAwIDAgMCAxcHggIWltcG9ydGFudDsgLyogIWltcG9ydGFudCBuZWVkZWQgZHVlIHRvIHdheXdhcmQgXCIudGhlbWUgLmRpaml0QnV0dG9uTm9kZVwiIHJ1bGVzICovXG59XG4uZGpfYTExeSAuZGlqaXRTZWxlY3QgLmRpaml0QXJyb3dCdXR0b25Db250YWluZXIsXG4uZGlqaXRUb29sYmFyIC5kaWppdENvbWJvQm94IC5kaWppdEFycm93QnV0dG9uQ29udGFpbmVyIHtcblx0Lyogb3ZlcnJpZGVzIGFib3ZlIHJ1bGUgcGx1cyBtaXJyb3ItaW1hZ2UgcnVsZSBpbiBkaWppdF9ydGwuY3NzIHRvIGhhdmUgbm8gZGl2aWRlciB3aGVuIENvbWJvQm94IGluIFRvb2xiYXIgKi9cblx0Ym9yZGVyLXdpZHRoOiAwICFpbXBvcnRhbnQ7XG59XG5cbi5kaWppdENvbWJvQm94TWVudSB7XG5cdC8qIERyb3AgZG93biBtZW51IGlzIGltcGxlbWVudGVkIGFzIDx1bD4gPGxpLz4gPGxpLz4gLi4uIGJ1dCB3ZSBkb24ndCB3YW50IGNpcmNsZXMgYmVmb3JlIGVhY2ggaXRlbSAqL1xuXHRsaXN0LXN0eWxlLXR5cGU6IG5vbmU7XG59XG4uZGlqaXRTcGlubmVyIC5kaWppdFNwaW5uZXJCdXR0b25Db250YWluZXIgLmRpaml0QnV0dG9uTm9kZSB7XG5cdC8qIGRpdmlkaW5nIGxpbmUgYmV0d2VlbiBpbnB1dCBhcmVhIGFuZCB1cC9kb3duIGJ1dHRvbihzKSBmb3IgQ29tYm9Cb3ggYW5kIFNwaW5uZXIgKi9cblx0Ym9yZGVyLXdpZHRoOiAwO1xufVxuLmRqX2llIC5kal9hMTF5IC5kaWppdFNwaW5uZXIgLmRpaml0U3Bpbm5lckJ1dHRvbkNvbnRhaW5lciAuZGlqaXRCdXR0b25Ob2RlIHtcblx0Y2xlYXI6IGJvdGg7IC8qIElFIHdvcmthcm91bmQgKi9cbn1cblxuLmRqX2llIC5kaWppdFRvb2xiYXIgLmRpaml0Q29tYm9Cb3gge1xuXHQvKiBtYWtlIGNvbWJvYm94IGJ1dHRvbnMgYWxpZ24gcHJvcGVybHkgd2l0aCBvdGhlciBidXR0b25zIGluIGEgdG9vbGJhciAqL1xuXHR2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xufVxuXG4vKiBTcGlubmVyICovXG5cbi5kaWppdFRleHRCb3ggLmRpaml0U3Bpbm5lckJ1dHRvbkNvbnRhaW5lciB7XG5cdHdpZHRoOiAxZW07XG5cdHBvc2l0aW9uOiByZWxhdGl2ZSAhaW1wb3J0YW50O1xuXHRvdmVyZmxvdzogaGlkZGVuO1xufVxuLmRpaml0U3Bpbm5lciAuZGlqaXRTcGlubmVyQnV0dG9uSW5uZXIge1xuXHR3aWR0aDoxZW07XG5cdHZpc2liaWxpdHk6aGlkZGVuICFpbXBvcnRhbnQ7IC8qIGp1c3QgYSBzaXppbmcgZWxlbWVudCAqL1xuXHRvdmVyZmxvdy14OmhpZGRlbjtcbn1cbi5kaWppdENvbWJvQm94IC5kaWppdEJ1dHRvbk5vZGUsXG4uZGlqaXRTcGlubmVyQnV0dG9uQ29udGFpbmVyIC5kaWppdEJ1dHRvbk5vZGUge1xuXHRib3JkZXItd2lkdGg6IDA7XG59XG4uZGpfYTExeSAuZGlqaXRTcGlubmVyQnV0dG9uQ29udGFpbmVyIC5kaWppdEJ1dHRvbk5vZGUge1xuXHRib3JkZXItd2lkdGg6IDBweCAhaW1wb3J0YW50O1xuXHRib3JkZXItc3R5bGU6IHNvbGlkICFpbXBvcnRhbnQ7XG59XG4uZGpfYTExeSAuZGlqaXRUZXh0Qm94IC5kaWppdFNwaW5uZXJCdXR0b25Db250YWluZXIsXG4uZGpfYTExeSAuZGlqaXRTcGlubmVyIC5kaWppdEFycm93QnV0dG9uSW5uZXIsXG4uZGpfYTExeSAuZGlqaXRTcGlubmVyQnV0dG9uQ29udGFpbmVyIGlucHV0IHtcblx0d2lkdGg6IDFlbSAhaW1wb3J0YW50O1xufVxuLmRqX2ExMXkgLmRpaml0U3Bpbm5lciAuZGlqaXRBcnJvd0J1dHRvbklubmVyIHtcblx0bWFyZ2luOiAwIGF1dG8gIWltcG9ydGFudDsgLyogc2hvdWxkIGF1dG8tY2VudGVyICovXG59XG4uZGpfaWUgLmRqX2ExMXkgLmRpaml0U3Bpbm5lciAuZGlqaXRBcnJvd0J1dHRvbklubmVyIC5kaWppdElucHV0RmllbGQge1xuXHRwYWRkaW5nLWxlZnQ6IDAuM2VtICFpbXBvcnRhbnQ7XG5cdHBhZGRpbmctcmlnaHQ6IDAuM2VtICFpbXBvcnRhbnQ7XG5cdG1hcmdpbi1sZWZ0OiAwLjNlbSAhaW1wb3J0YW50O1xuXHRtYXJnaW4tcmlnaHQ6IDAuM2VtICFpbXBvcnRhbnQ7XG5cdHdpZHRoOiAxLjRlbSAhaW1wb3J0YW50O1xufVxuLmRqX2llNyAuZGpfYTExeSAuZGlqaXRTcGlubmVyIC5kaWppdEFycm93QnV0dG9uSW5uZXIgLmRpaml0SW5wdXRGaWVsZCB7XG5cdHBhZGRpbmctbGVmdDogMCAhaW1wb3J0YW50OyAvKiBtYW51YWxseSBjZW50ZXIgSU5QVVQ6IGNoYXJhY3RlciBpcyAuNWVtIGFuZCB0b3RhbCB3aWR0aCA9IDFlbSAqL1xuXHRwYWRkaW5nLXJpZ2h0OiAwICFpbXBvcnRhbnQ7XG5cdHdpZHRoOiAxZW0gIWltcG9ydGFudDtcbn1cbi5kal9pZTYgLmRqX2ExMXkgLmRpaml0U3Bpbm5lciAuZGlqaXRBcnJvd0J1dHRvbklubmVyIC5kaWppdElucHV0RmllbGQge1xuXHRtYXJnaW4tbGVmdDogMC4xZW0gIWltcG9ydGFudDtcblx0bWFyZ2luLXJpZ2h0OiAwLjFlbSAhaW1wb3J0YW50O1xuXHR3aWR0aDogMWVtICFpbXBvcnRhbnQ7XG59XG4uZGpfaWVxdWlya3MgLmRqX2ExMXkgLmRpaml0U3Bpbm5lciAuZGlqaXRBcnJvd0J1dHRvbklubmVyIC5kaWppdElucHV0RmllbGQge1xuXHRtYXJnaW4tbGVmdDogMCAhaW1wb3J0YW50O1xuXHRtYXJnaW4tcmlnaHQ6IDAgIWltcG9ydGFudDtcblx0d2lkdGg6IDJlbSAhaW1wb3J0YW50O1xufVxuLmRpaml0U3Bpbm5lciAuZGlqaXRTcGlubmVyQnV0dG9uQ29udGFpbmVyIC5kaWppdEFycm93QnV0dG9uIHtcblx0Lyogbm90ZTogLmRpaml0SW5wdXRMYXlvdXRDb250YWluZXIgbWFrZXMgdGhpcyBydWxlIG92ZXJyaWRlIC5kaWppdEFycm93QnV0dG9uIHNldHRpbmdzXG5cdCAqIGZvciBkaWppdC5mb3JtLkJ1dHRvblxuXHQgKi9cblx0cGFkZGluZzogMDtcblx0cG9zaXRpb246IGFic29sdXRlICFpbXBvcnRhbnQ7XG5cdHJpZ2h0OiAwO1xuXHRmbG9hdDogbm9uZTtcblx0aGVpZ2h0OiA1MCU7XG5cdHdpZHRoOiAxMDAlO1xuXHRib3R0b206IGF1dG87XG5cdGxlZnQ6IDA7XG5cdHJpZ2h0OiBhdXRvO1xufVxuLmRqX2llcXVpcmtzIC5kaWppdFNwaW5uZXIgLmRpaml0U3Bpbm5lckJ1dHRvbkNvbnRhaW5lciAuZGlqaXRBcnJvd0J1dHRvbiB7XG5cdHdpZHRoOiBhdXRvO1xufVxuLmRqX2ExMXkgLmRpaml0U3Bpbm5lckJ1dHRvbkNvbnRhaW5lciAuZGlqaXRBcnJvd0J1dHRvbiB7XG5cdG92ZXJmbG93OiB2aXNpYmxlICFpbXBvcnRhbnQ7XG59XG4uZGlqaXRTcGlubmVyIC5kaWppdFNwaW5uZXJCdXR0b25Db250YWluZXIgLmRpaml0RG93bkFycm93QnV0dG9uIHtcblx0dG9wOiA1MCU7XG5cdGJvcmRlci10b3Atd2lkdGg6IDFweCAhaW1wb3J0YW50O1xufVxuLmRpaml0U3Bpbm5lciAuZGlqaXRTcGlubmVyQnV0dG9uQ29udGFpbmVyIC5kaWppdFVwQXJyb3dCdXR0b24ge1xuXHQjYm90dG9tOiA1MCU7XHQvKiBvdGhlcndpc2UgKG9uIHNvbWUgbWFjaGluZXMpIHRvcCBhcnJvdyBpY29uIHRvbyBjbG9zZSB0byBzcGxpdHRlciBib3JkZXIgKElFNi83KSAqL1xuXHR0b3A6IDA7XG59XG4uZGlqaXRTcGlubmVyIC5kaWppdEFycm93QnV0dG9uSW5uZXIge1xuXHRtYXJnaW46IGF1dG87XG5cdG92ZXJmbG93LXg6IGhpZGRlbjtcblx0aGVpZ2h0OiAxMDAlICFpbXBvcnRhbnQ7XG59XG4uZGpfaWVxdWlya3MgLmRpaml0U3Bpbm5lciAuZGlqaXRBcnJvd0J1dHRvbklubmVyIHtcblx0aGVpZ2h0OiBhdXRvICFpbXBvcnRhbnQ7XG59XG4uZGlqaXRTcGlubmVyIC5kaWppdEFycm93QnV0dG9uSW5uZXIgLmRpaml0SW5wdXRGaWVsZCB7XG5cdC1tb3otdHJhbnNmb3JtOiBzY2FsZSgwLjUpO1xuXHQtbW96LXRyYW5zZm9ybS1vcmlnaW46IGNlbnRlciB0b3A7XG5cdC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZSgwLjUpO1xuXHQtd2Via2l0LXRyYW5zZm9ybS1vcmlnaW46IGNlbnRlciB0b3A7XG5cdC1vLXRyYW5zZm9ybTogc2NhbGUoMC41KTtcblx0LW8tdHJhbnNmb3JtLW9yaWdpbjogY2VudGVyIHRvcDtcblx0dHJhbnNmb3JtOiBzY2FsZSgwLjUpO1xuXHR0cmFuc2Zvcm0tb3JpZ2luOiBsZWZ0IHRvcDtcblx0cGFkZGluZy10b3A6IDA7XG5cdHBhZGRpbmctYm90dG9tOiAwO1xuXHRwYWRkaW5nLWxlZnQ6IDAgIWltcG9ydGFudDtcblx0cGFkZGluZy1yaWdodDogMCAhaW1wb3J0YW50O1xuXHR3aWR0aDogMTAwJTtcblx0dmlzaWJpbGl0eTogaGlkZGVuO1xufVxuLmRqX2llIC5kaWppdFNwaW5uZXIgLmRpaml0QXJyb3dCdXR0b25Jbm5lciAuZGlqaXRJbnB1dEZpZWxkIHtcblx0em9vbTogNTAlOyAvKiBlbXVsYXRlIHRyYW5zZm9ybTogc2NhbGUoMC41KSAqL1xufVxuLmRpaml0U3Bpbm5lciAuZGlqaXRTcGlubmVyQnV0dG9uQ29udGFpbmVyIC5kaWppdEFycm93QnV0dG9uSW5uZXIge1xuXHRvdmVyZmxvdzogaGlkZGVuO1xufVxuXG4uZGpfYTExeSAuZGlqaXRTcGlubmVyIC5kaWppdFNwaW5uZXJCdXR0b25Db250YWluZXIgLmRpaml0QXJyb3dCdXR0b24ge1xuXHR3aWR0aDogMTAwJTtcbn1cbi5kal9pZXF1aXJrcyAuZGpfYTExeSAuZGlqaXRTcGlubmVyIC5kaWppdFNwaW5uZXJCdXR0b25Db250YWluZXIgLmRpaml0QXJyb3dCdXR0b24ge1xuXHR3aWR0aDogMWVtOyAvKiBtYXRjaGVzIC5kal9hMTF5IC5kaWppdFRleHRCb3ggLmRpaml0U3Bpbm5lckJ1dHRvbkNvbnRhaW5lciBydWxlIC0gMTAwJSBpcyB0aGUgd2hvbGUgc2NyZWVuIHdpZHRoIGluIHF1aXJrcyAqL1xufVxuLmRqX2ExMXkgLmRpaml0U3Bpbm5lciAuZGlqaXRBcnJvd0J1dHRvbklubmVyIC5kaWppdElucHV0RmllbGQge1xuXHR2ZXJ0aWNhbC1hbGlnbjp0b3A7XG5cdHZpc2liaWxpdHk6IHZpc2libGU7XG59XG4uZGpfYTExeSAuZGlqaXRTcGlubmVyQnV0dG9uQ29udGFpbmVyIHtcblx0d2lkdGg6IDFlbTtcbn1cblxuLyoqKipcblx0XHRkaWppdC5mb3JtLkNoZWNrQm94XG4gXHQgJlxuICBcdFx0ZGlqaXQuZm9ybS5SYWRpb0J1dHRvblxuICoqKiovXG5cbi5kaWppdENoZWNrQm94LFxuLmRpaml0UmFkaW8sXG4uZGlqaXRDaGVja0JveElucHV0IHtcblx0cGFkZGluZzogMDtcblx0Ym9yZGVyOiAwO1xuXHR3aWR0aDogMTZweDtcblx0aGVpZ2h0OiAxNnB4O1xuXHRiYWNrZ3JvdW5kLXBvc2l0aW9uOmNlbnRlciBjZW50ZXI7XG5cdGJhY2tncm91bmQtcmVwZWF0Om5vLXJlcGVhdDtcblx0b3ZlcmZsb3c6IGhpZGRlbjtcbn1cblxuLmRpaml0Q2hlY2tCb3ggaW5wdXQsXG4uZGlqaXRSYWRpbyBpbnB1dCB7XG5cdG1hcmdpbjogMDtcblx0cGFkZGluZzogMDtcblx0ZGlzcGxheTogYmxvY2s7XG59XG5cbi5kaWppdENoZWNrQm94SW5wdXQge1xuXHQvKiBwbGFjZSB0aGUgYWN0dWFsIGlucHV0IG9uIHRvcCwgYnV0IGludmlzaWJsZSAqL1xuXHRvcGFjaXR5OiAwO1xufVxuXG4uZGpfaWUgLmRpaml0Q2hlY2tCb3hJbnB1dCB7XG5cdGZpbHRlcjogYWxwaGEob3BhY2l0eT0wKTtcbn1cblxuLmRqX2ExMXkgLmRpaml0Q2hlY2tCb3gsXG4uZGpfYTExeSAuZGlqaXRSYWRpbyB7XG5cdC8qIGluIGExMXkgbW9kZSB3ZSBkaXNwbGF5IHRoZSBuYXRpdmUgY2hlY2tib3ggKG5vdCB0aGUgaWNvbiksIHNvIGRvbid0IHJlc3RyaWN0IHRoZSBzaXplICovXG5cdHdpZHRoOiBhdXRvICFpbXBvcnRhbnQ7XG5cdGhlaWdodDogYXV0byAhaW1wb3J0YW50O1xufVxuLmRqX2ExMXkgLmRpaml0Q2hlY2tCb3hJbnB1dCB7XG5cdG9wYWNpdHk6IDE7XG5cdGZpbHRlcjogbm9uZTtcblx0d2lkdGg6IGF1dG87XG5cdGhlaWdodDogYXV0bztcbn1cblxuLmRqX2ExMXkgLmRpaml0Rm9jdXNlZExhYmVsIHtcblx0LyogZm9yIGNoZWNrYm94ZXMgb3IgcmFkaW8gYnV0dG9ucyBpbiBoaWdoIGNvbnRyYXN0IG1vZGUsIHVzZSBib3JkZXIgcmF0aGVyIHRoYW4gb3V0bGluZSB0byBpbmRpY2F0ZSBmb2N1cyAob3V0bGluZSBkb2VzIG5vdCB3b3JrIGluIEZGKSovXG5cdGJvcmRlcjogMXB4IGRvdHRlZDtcblx0b3V0bGluZTogMHB4ICFpbXBvcnRhbnQ7XG59XG5cbi8qKioqXG5cdFx0ZGlqaXQuUHJvZ3Jlc3NCYXJcbiAqKioqL1xuXG4uZGlqaXRQcm9ncmVzc0JhciB7XG4gICAgei1pbmRleDogMDsgLyogc28gei1pbmRleCBzZXR0aW5ncyBiZWxvdyBoYXZlIG5vIGVmZmVjdCBvdXRzaWRlIG9mIHRoZSBQcm9ncmVzc0JhciAqL1xufVxuLmRpaml0UHJvZ3Jlc3NCYXJFbXB0eSB7XG5cdC8qIG91dGVyIGNvbnRhaW5lciBhbmQgYmFja2dyb3VuZCBvZiB0aGUgYmFyIHRoYXQncyBub3QgZmluaXNoZWQgeWV0Ki9cblx0cG9zaXRpb246cmVsYXRpdmU7b3ZlcmZsb3c6aGlkZGVuO1xuXHRib3JkZXI6MXB4IHNvbGlkIGJsYWNrOyBcdC8qIGExMXk6IGJvcmRlciBuZWNlc3NhcnkgZm9yIGhpZ2gtY29udHJhc3QgbW9kZSAqL1xuXHR6LWluZGV4OjA7XHRcdFx0LyogZXN0YWJsaXNoIGEgc3RhY2tpbmcgY29udGV4dCBmb3IgdGhpcyBwcm9ncmVzcyBiYXIgKi9cbn1cblxuLmRpaml0UHJvZ3Jlc3NCYXJGdWxsIHtcblx0Lyogb3V0ZXIgY29udGFpbmVyIGZvciBiYWNrZ3JvdW5kIG9mIGJhciB0aGF0IGlzIGZpbmlzaGVkICovXG5cdHBvc2l0aW9uOmFic29sdXRlO1xuXHRvdmVyZmxvdzpoaWRkZW47XG5cdHotaW5kZXg6LTE7XG5cdHRvcDowO1xuXHR3aWR0aDoxMDAlO1xufVxuLmRqX2llNiAuZGlqaXRQcm9ncmVzc0JhckZ1bGwge1xuXHRoZWlnaHQ6MS42ZW07XG59XG5cbi5kaWppdFByb2dyZXNzQmFyVGlsZSB7XG5cdC8qIGlubmVyIGNvbnRhaW5lciBmb3IgZmluaXNoZWQgcG9ydGlvbiAqL1xuXHRwb3NpdGlvbjphYnNvbHV0ZTtcblx0b3ZlcmZsb3c6aGlkZGVuO1xuXHR0b3A6MDtcblx0bGVmdDowO1xuXHRib3R0b206MDtcblx0cmlnaHQ6MDtcblx0bWFyZ2luOjA7XG5cdHBhZGRpbmc6MDtcblx0d2lkdGg6IDEwMCU7ICAgIC8qIG5lZWRlZCBmb3IgSUUvcXVpcmtzICovXG5cdGhlaWdodDphdXRvO1xuXHRiYWNrZ3JvdW5kLWNvbG9yOiNhYWE7XG5cdGJhY2tncm91bmQtYXR0YWNobWVudDogZml4ZWQ7XG59XG5cbi5kal9hMTF5IC5kaWppdFByb2dyZXNzQmFyVGlsZSB7XG5cdC8qIGExMXk6ICBUaGUgYm9yZGVyIHByb3ZpZGVzIHZpc2liaWxpdHkgaW4gaGlnaC1jb250cmFzdCBtb2RlICovXG5cdGJvcmRlci13aWR0aDoycHg7XG5cdGJvcmRlci1zdHlsZTpzb2xpZDtcblx0YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudCAhaW1wb3J0YW50O1xufVxuXG4uZGpfaWU2IC5kaWppdFByb2dyZXNzQmFyVGlsZSB7XG5cdC8qIHdpZHRoOmF1dG8gd29ya3MgaW4gSUU2IHdpdGggcG9zaXRpb246c3RhdGljIGJ1dCBub3QgcG9zaXRpb246YWJzb2x1dGUgKi9cblx0cG9zaXRpb246c3RhdGljO1xuXHQvKiBoZWlnaHQ6YXV0byBvciAxMDAlIGRvZXMgbm90IHdvcmsgaW4gSUU2ICovXG5cdGhlaWdodDoxLjZlbTtcbn1cblxuLmRpaml0UHJvZ3Jlc3NCYXJJbmRldGVybWluYXRlIC5kaWppdFByb2dyZXNzQmFyVGlsZSB7XG5cdC8qIGFuaW1hdGVkIGdpZiBmb3IgJ2luZGV0ZXJtaW5hdGUnIG1vZGUgKi9cbn1cblxuLmRpaml0UHJvZ3Jlc3NCYXJJbmRldGVybWluYXRlSGlnaENvbnRyYXN0SW1hZ2Uge1xuXHRkaXNwbGF5Om5vbmU7XG59XG5cbi5kal9hMTF5IC5kaWppdFByb2dyZXNzQmFySW5kZXRlcm1pbmF0ZSAuZGlqaXRQcm9ncmVzc0JhckluZGV0ZXJtaW5hdGVIaWdoQ29udHJhc3RJbWFnZSB7XG5cdGRpc3BsYXk6YmxvY2s7XG5cdHBvc2l0aW9uOmFic29sdXRlO1xuXHR0b3A6MDtcblx0Ym90dG9tOjA7XG5cdG1hcmdpbjowO1xuXHRwYWRkaW5nOjA7XG5cdHdpZHRoOjEwMCU7XG5cdGhlaWdodDphdXRvO1xufVxuXG4uZGlqaXRQcm9ncmVzc0JhckxhYmVsIHtcblx0ZGlzcGxheTpibG9jaztcblx0cG9zaXRpb246c3RhdGljO1xuXHR3aWR0aDoxMDAlO1xuXHR0ZXh0LWFsaWduOmNlbnRlcjtcblx0YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudCAhaW1wb3J0YW50O1xufVxuXG4vKioqKlxuXHRcdGRpaml0LlRvb2x0aXBcbiAqKioqL1xuXG4uZGlqaXRUb29sdGlwIHtcblx0cG9zaXRpb246IGFic29sdXRlO1xuXHR6LWluZGV4OiAyMDAwO1xuXHRkaXNwbGF5OiBibG9jaztcblx0LyogbWFrZSB2aXNpYmxlIGJ1dCBvZmYgc2NyZWVuICovXG5cdGxlZnQ6IDA7XG5cdHRvcDogLTEwMDAwcHg7XG5cdG92ZXJmbG93OiB2aXNpYmxlO1xufVxuXG4uZGlqaXRUb29sdGlwQ29udGFpbmVyIHtcblx0Ym9yZGVyOiBzb2xpZCBibGFjayAycHg7XG5cdGJhY2tncm91bmQ6ICNiOGI1YjU7XG5cdGNvbG9yOiBibGFjaztcblx0Zm9udC1zaXplOiBzbWFsbDtcbn1cblxuLmRpaml0VG9vbHRpcEZvY3VzTm9kZSB7XG5cdHBhZGRpbmc6IDJweCAycHggMnB4IDJweDtcbn1cblxuLmRpaml0VG9vbHRpcENvbm5lY3RvciB7XG5cdHBvc2l0aW9uOiBhYnNvbHV0ZTtcbn1cbi5kal9hMTF5IC5kaWppdFRvb2x0aXBDb25uZWN0b3Ige1xuXHRkaXNwbGF5OiBub25lO1x0Lyogd29uJ3Qgc2hvdyBiL2MgaXQncyBiYWNrZ3JvdW5kLWltYWdlOyBoaWRlIHRvIGF2b2lkIGJvcmRlciBnYXAgKi9cbn1cblxuLmRpaml0VG9vbHRpcERhdGEge1xuXHRkaXNwbGF5Om5vbmU7XG59XG5cbi8qIExheW91dCB3aWRnZXRzLiBUaGlzIGlzIGVzc2VudGlhbCBDU1MgdG8gbWFrZSBsYXlvdXQgd29yayAoaXQgaXNuJ3QgXCJzdHlsaW5nXCIgQ1NTKVxuICAgbWFrZSBzdXJlIHRoYXQgdGhlIHBvc2l0aW9uOmFic29sdXRlIGluIGRpaml0QWxpZ24qIG92ZXJyaWRlcyBvdGhlciBjbGFzc2VzICovXG5cbi5kaWppdExheW91dENvbnRhaW5lciB7XG5cdHBvc2l0aW9uOiByZWxhdGl2ZTtcblx0ZGlzcGxheTogYmxvY2s7XG5cdG92ZXJmbG93OiBoaWRkZW47XG59XG5cbi5kaWppdEFsaWduVG9wLFxuLmRpaml0QWxpZ25Cb3R0b20sXG4uZGlqaXRBbGlnbkxlZnQsXG4uZGlqaXRBbGlnblJpZ2h0IHtcblx0cG9zaXRpb246IGFic29sdXRlO1xuXHRvdmVyZmxvdzogaGlkZGVuO1xufVxuXG5ib2R5IC5kaWppdEFsaWduQ2xpZW50IHsgcG9zaXRpb246IGFic29sdXRlOyB9XG5cbi8qXG4gKiBCb3JkZXJDb250YWluZXJcbiAqXG4gKiAuZGlqaXRCb3JkZXJDb250YWluZXIgaXMgYSBzdHlsaXplZCBsYXlvdXQgd2hlcmUgcGFuZXMgaGF2ZSBib3JkZXIgYW5kIG1hcmdpbi5cbiAqIC5kaWppdEJvcmRlckNvbnRhaW5lck5vR3V0dGVyIGlzIGEgcmF3IGxheW91dC5cbiAqL1xuLmRpaml0Qm9yZGVyQ29udGFpbmVyLCAuZGlqaXRCb3JkZXJDb250YWluZXJOb0d1dHRlciB7XG5cdHBvc2l0aW9uOnJlbGF0aXZlO1xuXHRvdmVyZmxvdzogaGlkZGVuO1xuICAgIHotaW5kZXg6IDA7IC8qIHNvIHotaW5kZXggc2V0dGluZ3MgYmVsb3cgaGF2ZSBubyBlZmZlY3Qgb3V0c2lkZSBvZiB0aGUgQm9yZGVyQ29udGFpbmVyICovXG59XG5cbi5kaWppdEJvcmRlckNvbnRhaW5lclBhbmUsXG4uZGlqaXRCb3JkZXJDb250YWluZXJOb0d1dHRlclBhbmUge1xuXHRwb3NpdGlvbjogYWJzb2x1dGUgIWltcG9ydGFudDtcdC8qICFpbXBvcnRhbnQgdG8gb3ZlcnJpZGUgcG9zaXRpb246cmVsYXRpdmUgaW4gZGlqaXRUYWJDb250YWluZXIgZXRjLiAqL1xuXHR6LWluZGV4OiAyO1x0XHQvKiBhYm92ZSB0aGUgc3BsaXR0ZXJzIHNvIHRoYXQgb2ZmLWJ5LW9uZSBicm93c2VyIGVycm9ycyBkb24ndCBjb3ZlciB1cCBib3JkZXIgb2YgcGFuZSAqL1xufVxuXG4uZGlqaXRCb3JkZXJDb250YWluZXIgPiAuZGlqaXRUZXh0QXJlYSB7XG5cdC8qIE9uIFNhZmFyaSwgZm9yIFNpbXBsZVRleHRBcmVhIGluc2lkZSBhIEJvcmRlckNvbnRhaW5lcixcblx0XHRkb24ndCB3YW50IHRvIGRpc3BsYXkgdGhlIGdyaXAgdG8gcmVzaXplICovXG5cdHJlc2l6ZTogbm9uZTtcbn1cblxuLmRpaml0R3V0dGVyIHtcblx0LyogZ3V0dGVyIGlzIGp1c3QgYSBwbGFjZSBob2xkZXIgZm9yIGVtcHR5IHNwYWNlIGJldHdlZW4gcGFuZXMgaW4gQm9yZGVyQ29udGFpbmVyICovXG5cdHBvc2l0aW9uOiBhYnNvbHV0ZTtcblx0Zm9udC1zaXplOiAxcHg7XHRcdC8qIG5lZWRlZCBieSBJRTYgZXZlbiB0aG91Z2ggZGl2IGlzIGVtcHR5LCBvdGhlcndpc2UgZ29lcyB0byAxNXB4ICovXG59XG5cbi8qIFNwbGl0Q29udGFpbmVyXG5cblx0J1YnID09IGNvbnRhaW5lciB0aGF0IHNwbGl0cyB2ZXJ0aWNhbGx5ICh1cC9kb3duKVxuXHQnSCcgPSBob3Jpem9udGFsIChsZWZ0L3JpZ2h0KVxuKi9cblxuLmRpaml0U3BsaXR0ZXIge1xuXHRwb3NpdGlvbjogYWJzb2x1dGU7XG5cdG92ZXJmbG93OiBoaWRkZW47XG5cdHotaW5kZXg6IDEwO1x0XHQvKiBhYm92ZSB0aGUgcGFuZXMgc28gdGhhdCBzcGxpdHRlciBmb2N1cyBpcyB2aXNpYmxlIG9uIEZGLCBzZWUgIzc1ODMqL1xuXHRiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmO1xuXHRib3JkZXItY29sb3I6IGdyYXk7XG5cdGJvcmRlci1zdHlsZTogc29saWQ7XG5cdGJvcmRlci13aWR0aDogMDtcbn1cbi5kal9pZSAuZGlqaXRTcGxpdHRlciB7XG5cdHotaW5kZXg6IDE7XHQvKiBiZWhpbmQgdGhlIHBhbmVzIHNvIHRoYXQgcGFuZSBib3JkZXJzIGFyZW4ndCBvYnNjdXJlZCBzZWUgdGVzdF9HdWkuaHRtbC9bMTQzOTJdICovXG59XG5cbi5kaWppdFNwbGl0dGVyQWN0aXZlIHtcblx0ei1pbmRleDogMTEgIWltcG9ydGFudDtcbn1cblxuLmRpaml0U3BsaXR0ZXJDb3ZlciB7XG5cdHBvc2l0aW9uOmFic29sdXRlO1xuXHR6LWluZGV4Oi0xO1xuXHR0b3A6MDtcblx0bGVmdDowO1xuXHR3aWR0aDoxMDAlO1xuXHRoZWlnaHQ6MTAwJTtcbn1cblxuLmRpaml0U3BsaXR0ZXJDb3ZlckFjdGl2ZSB7XG5cdHotaW5kZXg6MyAhaW1wb3J0YW50O1xufVxuXG4vKiAjNjk0NTogc3RvcCBtb3VzZSBldmVudHMgKi9cbi5kal9pZSAuZGlqaXRTcGxpdHRlckNvdmVyIHtcblx0YmFja2dyb3VuZDogd2hpdGU7XG5cdG9wYWNpdHk6IDA7XG59XG4uZGpfaWU2IC5kaWppdFNwbGl0dGVyQ292ZXIsXG4uZGpfaWU3IC5kaWppdFNwbGl0dGVyQ292ZXIsXG4uZGpfaWU4IC5kaWppdFNwbGl0dGVyQ292ZXIge1xuXHRmaWx0ZXI6IGFscGhhKG9wYWNpdHk9MCk7XG59XG5cbi5kaWppdFNwbGl0dGVySCB7XG5cdGhlaWdodDogN3B4O1xuXHRib3JkZXItdG9wOjFweDtcblx0Ym9yZGVyLWJvdHRvbToxcHg7XG5cdGN1cnNvcjogcm93LXJlc2l6ZTtcblx0LXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOiB0cmFuc3BhcmVudDtcbn1cbi5kaWppdFNwbGl0dGVyViB7XG5cdHdpZHRoOiA3cHg7XG5cdGJvcmRlci1sZWZ0OjFweDtcblx0Ym9yZGVyLXJpZ2h0OjFweDtcblx0Y3Vyc29yOiBjb2wtcmVzaXplO1xuXHQtd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6IHRyYW5zcGFyZW50O1xufVxuLmRpaml0U3BsaXRDb250YWluZXIge1xuXHRwb3NpdGlvbjogcmVsYXRpdmU7XG5cdG92ZXJmbG93OiBoaWRkZW47XG5cdGRpc3BsYXk6IGJsb2NrO1xufVxuXG4uZGlqaXRTcGxpdFBhbmUge1xuXHRwb3NpdGlvbjogYWJzb2x1dGU7XG59XG5cbi5kaWppdFNwbGl0Q29udGFpbmVyU2l6ZXJILFxuLmRpaml0U3BsaXRDb250YWluZXJTaXplclYge1xuXHRwb3NpdGlvbjphYnNvbHV0ZTtcblx0Zm9udC1zaXplOiAxcHg7XG5cdGJhY2tncm91bmQtY29sb3I6IFRocmVlREZhY2U7XG5cdGJvcmRlcjogMXB4IHNvbGlkO1xuXHRib3JkZXItY29sb3I6IFRocmVlREhpZ2hsaWdodCBUaHJlZURTaGFkb3cgVGhyZWVEU2hhZG93IFRocmVlREhpZ2hsaWdodDtcblx0bWFyZ2luOiAwO1xufVxuXG4uZGlqaXRTcGxpdENvbnRhaW5lclNpemVySCAudGh1bWIsIC5kaWppdFNwbGl0dGVyViAuZGlqaXRTcGxpdHRlclRodW1iIHtcblx0b3ZlcmZsb3c6aGlkZGVuO1xuXHRwb3NpdGlvbjphYnNvbHV0ZTtcblx0dG9wOjQ5JTtcbn1cblxuLmRpaml0U3BsaXRDb250YWluZXJTaXplclYgLnRodW1iLCAuZGlqaXRTcGxpdHRlckggLmRpaml0U3BsaXR0ZXJUaHVtYiB7XG5cdHBvc2l0aW9uOmFic29sdXRlO1xuXHRsZWZ0OjQ5JTtcbn1cblxuLmRpaml0U3BsaXR0ZXJTaGFkb3csXG4uZGlqaXRTcGxpdENvbnRhaW5lclZpcnR1YWxTaXplckgsXG4uZGlqaXRTcGxpdENvbnRhaW5lclZpcnR1YWxTaXplclYge1xuXHRmb250LXNpemU6IDFweDtcblx0YmFja2dyb3VuZC1jb2xvcjogVGhyZWVEU2hhZG93O1xuXHQtbW96LW9wYWNpdHk6IDAuNTtcblx0b3BhY2l0eTogMC41O1xuXHRmaWx0ZXI6IEFscGhhKE9wYWNpdHk9NTApO1xuXHRtYXJnaW46IDA7XG59XG5cbi5kaWppdFNwbGl0Q29udGFpbmVyU2l6ZXJILCAuZGlqaXRTcGxpdENvbnRhaW5lclZpcnR1YWxTaXplckgge1xuXHRjdXJzb3I6IGNvbC1yZXNpemU7XG59XG5cbi5kaWppdFNwbGl0Q29udGFpbmVyU2l6ZXJWLCAuZGlqaXRTcGxpdENvbnRhaW5lclZpcnR1YWxTaXplclYge1xuXHRjdXJzb3I6IHJvdy1yZXNpemU7XG59XG5cbi5kal9hMTF5IC5kaWppdFNwbGl0dGVySCB7XG5cdGJvcmRlci10b3A6MXB4IHNvbGlkICNkM2QzZDMgIWltcG9ydGFudDtcblx0Ym9yZGVyLWJvdHRvbToxcHggc29saWQgI2QzZDNkMyAhaW1wb3J0YW50O1xufVxuLmRqX2ExMXkgLmRpaml0U3BsaXR0ZXJWIHtcblx0Ym9yZGVyLWxlZnQ6MXB4IHNvbGlkICNkM2QzZDMgIWltcG9ydGFudDtcblx0Ym9yZGVyLXJpZ2h0OjFweCBzb2xpZCAjZDNkM2QzICFpbXBvcnRhbnQ7XG59XG5cbi8qIENvbnRlbnRQYW5lICovXG5cbi5kaWppdENvbnRlbnRQYW5lIHtcblx0ZGlzcGxheTogYmxvY2s7XG5cdG92ZXJmbG93OiBhdXRvO1x0LyogaWYgd2UgZG9uJ3QgaGF2ZSB0aGlzIChvciBvdmVyZmxvdzpoaWRkZW4pLCB0aGVuIFdpZGdldC5yZXNpemVUbygpIGRvZXNuJ3QgbWFrZSBzZW5zZSBmb3IgQ29udGVudFBhbmUgKi9cblx0LXdlYmtpdC1vdmVyZmxvdy1zY3JvbGxpbmc6IHRvdWNoO1xufVxuXG4uZGlqaXRDb250ZW50UGFuZVNpbmdsZUNoaWxkIHtcblx0Lypcblx0ICogaWYgdGhlIENvbnRlbnRQYW5lIGhvbGRzIGEgc2luZ2xlIGxheW91dCB3aWRnZXQgY2hpbGQgd2hpY2ggaXMgYmVpbmcgc2l6ZWQgdG8gbWF0Y2ggdGhlIGNvbnRlbnQgcGFuZSxcblx0ICogdGhlbiB0aGUgQ29udGVudFBhbmUgc2hvdWxkIG5ldmVyIGdldCBhIHNjcm9sbGJhciAoYnV0IGl0IGRvZXMgZHVlIHRvIGJyb3dzZXIgYnVncywgc2VlICM5NDQ5XG5cdCAqL1xuXHRvdmVyZmxvdzogaGlkZGVuO1xufVxuXG4uZGlqaXRDb250ZW50UGFuZUxvYWRpbmcgLmRpaml0SWNvbkxvYWRpbmcsXG4uZGlqaXRDb250ZW50UGFuZUVycm9yIC5kaWppdEljb25FcnJvciB7XG5cdG1hcmdpbi1yaWdodDogOXB4O1xufVxuXG4vKiBUaXRsZVBhbmUgYW5kIEZpZWxkc2V0ICovXG5cbi5kaWppdFRpdGxlUGFuZSB7XG5cdGRpc3BsYXk6IGJsb2NrO1xuXHRvdmVyZmxvdzogaGlkZGVuO1xufVxuLmRpaml0RmllbGRzZXQge1xuXHRib3JkZXI6IDFweCBzb2xpZCBncmF5O1xufVxuLmRpaml0VGl0bGVQYW5lVGl0bGUsIC5kaWppdEZpZWxkc2V0VGl0bGUge1xuXHRjdXJzb3I6IHBvaW50ZXI7XG5cdC13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjogdHJhbnNwYXJlbnQ7XG59XG4uZGlqaXRUaXRsZVBhbmVUaXRsZUZpeGVkT3BlbiwgLmRpaml0VGl0bGVQYW5lVGl0bGVGaXhlZENsb3NlZCxcbi5kaWppdEZpZWxkc2V0VGl0bGVGaXhlZE9wZW4sIC5kaWppdEZpZWxkc2V0VGl0bGVGaXhlZENsb3NlZCB7XG5cdC8qIFRpdGxlUGFuZSBvciBGaWVsZHNldCB0aGF0IGNhbm5vdCBiZSB0b2dnbGVkICovXG5cdGN1cnNvcjogZGVmYXVsdDtcbn1cbi5kaWppdFRpdGxlUGFuZVRpdGxlICoge1xuXHR2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xufVxuLmRpaml0VGl0bGVQYW5lIC5kaWppdEFycm93Tm9kZUlubmVyLCAuZGlqaXRGaWVsZHNldCAuZGlqaXRBcnJvd05vZGVJbm5lciB7XG5cdC8qIG5vcm1hbGx5LCBoaWRlIGFycm93IHRleHQgaW4gZmF2b3Igb2YgaWNvbiAqL1xuXHRkaXNwbGF5OiBub25lO1xufVxuLmRqX2ExMXkgLmRpaml0VGl0bGVQYW5lIC5kaWppdEFycm93Tm9kZUlubmVyLCAuZGpfYTExeSAuZGlqaXRGaWVsZHNldCAuZGlqaXRBcnJvd05vZGVJbm5lciB7XG5cdC8qIC4uLiBleGNlcHQgaW4gYTExeSBtb2RlLCB0aGVuIHNob3cgdGV4dCBhcnJvdyAqL1xuXHRkaXNwbGF5OiBpbmxpbmU7XG5cdGZvbnQtZmFtaWx5OiBtb25vc3BhY2U7XHRcdC8qIGJlY2F1c2UgLSBhbmQgKyBhcmUgZGlmZmVyZW50IHdpZHRocyAqL1xufVxuLmRqX2ExMXkgLmRpaml0VGl0bGVQYW5lIC5kaWppdEFycm93Tm9kZSwgLmRqX2ExMXkgLmRpaml0RmllbGRzZXQgLmRpaml0QXJyb3dOb2RlIHtcblx0LyogLi4uIGFuZCBoaWRlIGljb24gKFRPRE86IGp1c3QgcG9pbnQgZGlqaXRJY29uIGNsYXNzIG9uIHRoZSBpY29uLCBhbmQgaXQgaGlkZXMgYXV0b21hdGljYWxseSkgKi9cblx0ZGlzcGxheTogbm9uZTtcbn1cbi5kaWppdFRpdGxlUGFuZVRpdGxlRml4ZWRPcGVuIC5kaWppdEFycm93Tm9kZSwgLmRpaml0VGl0bGVQYW5lVGl0bGVGaXhlZE9wZW4gLmRpaml0QXJyb3dOb2RlSW5uZXIsXG4uZGlqaXRUaXRsZVBhbmVUaXRsZUZpeGVkQ2xvc2VkIC5kaWppdEFycm93Tm9kZSwgLmRpaml0VGl0bGVQYW5lVGl0bGVGaXhlZENsb3NlZCAuZGlqaXRBcnJvd05vZGVJbm5lcixcbi5kaWppdEZpZWxkc2V0VGl0bGVGaXhlZE9wZW4gLmRpaml0QXJyb3dOb2RlLCAuZGlqaXRGaWVsZHNldFRpdGxlRml4ZWRPcGVuIC5kaWppdEFycm93Tm9kZUlubmVyLFxuLmRpaml0RmllbGRzZXRUaXRsZUZpeGVkQ2xvc2VkIC5kaWppdEFycm93Tm9kZSwgLmRpaml0RmllbGRzZXRUaXRsZUZpeGVkQ2xvc2VkIC5kaWppdEFycm93Tm9kZUlubmVyIHtcblx0LyogZG9uJ3Qgc2hvdyB0aGUgb3BlbiBjbG9zZSBpY29uIG9yIHRleHQgYXJyb3c7IGl0IG1ha2VzIHRoZSB1c2VyIHRoaW5rIHRoZSBwYW5lIGlzIGNsb3NhYmxlICovXG5cdGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtcdC8qICFpbXBvcnRhbnQgdG8gb3ZlcnJpZGUgYWJvdmUgYTExeSBydWxlcyB0byBzaG93IHRleHQgYXJyb3cgKi9cbn1cblxuLmRqX2llNiAuZGlqaXRUaXRsZVBhbmVDb250ZW50T3V0ZXIsXG4uZGpfaWU2IC5kaWppdFRpdGxlUGFuZSAuZGlqaXRUaXRsZVBhbmVUaXRsZSB7XG5cdC8qIGZvcmNlIGhhc0xheW91dCB0byBlbnN1cmUgYm9yZGVycyBldGMsIHNob3cgdXAgKi9cblx0em9vbTogMTtcbn1cblxuLyogQ29sb3IgUGFsZXR0ZVxuICogU2l6ZXMgZGVzaWduZWQgc28gdGhhdCB0YWJsZSBjZWxsIHBvc2l0aW9ucyBtYXRjaCBpY29ucyBpbiB1bmRlcmx5aW5nIGltYWdlLFxuICogd2hpY2ggYXBwZWFyIGF0IDIweDIwIGludGVydmFscy5cbiAqL1xuXG4uZGlqaXRDb2xvclBhbGV0dGUge1xuXHRib3JkZXI6IDFweCBzb2xpZCAjOTk5O1xuXHRiYWNrZ3JvdW5kOiAjZmZmO1xuXHRwb3NpdGlvbjogcmVsYXRpdmU7XG59XG5cbi5kaWppdENvbG9yUGFsZXR0ZSAuZGlqaXRQYWxldHRlVGFibGUge1xuXHQvKiBUYWJsZSB0aGF0IGhvbGRzIHRoZSBwYWxldHRlIGNlbGxzLCBhbmQgb3ZlcmxheXMgaW1hZ2UgZmlsZSB3aXRoIGNvbG9yIHN3YXRjaGVzLlxuXHQgKiBwYWRkaW5nL21hcmdpbiB0byBhbGlnbiB0YWJsZSB3aXRoIGltYWdlLlxuXHQgKi9cblx0cGFkZGluZzogMnB4IDNweCAzcHggM3B4O1xuXHRwb3NpdGlvbjogcmVsYXRpdmU7XG5cdG92ZXJmbG93OiBoaWRkZW47XG5cdG91dGxpbmU6IDA7XG5cdGJvcmRlci1jb2xsYXBzZTogc2VwYXJhdGU7XG59XG4uZGpfaWU2IC5kaWppdENvbG9yUGFsZXR0ZSAuZGlqaXRQYWxldHRlVGFibGUsXG4uZGpfaWU3IC5kaWppdENvbG9yUGFsZXR0ZSAuZGlqaXRQYWxldHRlVGFibGUsXG4uZGpfaWVxdWlya3MgLmRpaml0Q29sb3JQYWxldHRlIC5kaWppdFBhbGV0dGVUYWJsZSB7XG5cdC8qIHVzaW5nIHBhZGRpbmcgYWJvdmUgc28gdGhhdCBmb2N1cyBib3JkZXIgaXNuJ3QgY3V0b2ZmIG9uIG1vei93ZWJraXQsXG5cdCAqIGJ1dCB1c2luZyBtYXJnaW4gb24gSUUgYmVjYXVzZSBwYWRkaW5nIGRvZXNuJ3Qgc2VlbSB0byB3b3JrXG5cdCAqL1xuXHRwYWRkaW5nOiAwO1xuXHRtYXJnaW46IDJweCAzcHggM3B4IDNweDtcbn1cblxuLmRpaml0Q29sb3JQYWxldHRlIC5kaWppdFBhbGV0dGVDZWxsIHtcblx0LyogPHRkPiBpbiB0aGUgPHRhYmxlPiAqL1xuXHRmb250LXNpemU6IDFweDtcblx0dmVydGljYWwtYWxpZ246IG1pZGRsZTtcblx0dGV4dC1hbGlnbjogY2VudGVyO1xuXHRiYWNrZ3JvdW5kOiBub25lO1xufVxuLmRpaml0Q29sb3JQYWxldHRlIC5kaWppdFBhbGV0dGVJbWcge1xuXHQvKiBDYWxsZWQgZGlqaXRQYWxldHRlSW1nIGZvciBiYWNrLWNvbXBhdCwgdGhpcyBhY3R1YWxseSB3cmFwcyB0aGUgY29sb3Igc3dhdGNoIHdpdGggYSBib3JkZXIgYW5kIHBhZGRpbmcgKi9cblx0cGFkZGluZzogMXB4O1x0XHQvKiB3aGl0ZSBhcmVhIGJldHdlZW4gZ3JheSBib3JkZXIgYW5kIGNvbG9yIHN3YXRjaCAqL1xuXHRib3JkZXI6IDFweCBzb2xpZCAjOTk5O1xuXHRtYXJnaW46IDJweCAxcHg7XG5cdGN1cnNvcjogZGVmYXVsdDtcblx0Zm9udC1zaXplOiAxcHg7XHRcdC8qIHByZXZlbnQgPHNwYW4+IGZyb20gZ2V0dGluZyBiaWdnZXIganVzdCB0byBob2xkIGEgY2hhcmFjdGVyICovXG59XG4uZGpfZ2Vja28gLmRpaml0Q29sb3JQYWxldHRlIC5kaWppdFBhbGV0dGVJbWcge1xuXHRwYWRkaW5nLWJvdHRvbTogMDtcdC8qIHdvcmthcm91bmQgcmVuZGVyaW5nIGdsaXRjaCBvbiBGRiwgaXQgYWRkcyBhbiBleHRyYSBwaXhlbCBhdCB0aGUgYm90dG9tICovXG59XG4uZGlqaXRDb2xvclBhbGV0dGUgLmRpaml0Q29sb3JQYWxldHRlU3dhdGNoIHtcblx0LyogdGhlIGFjdHVhbCBwYXJ0IHdoZXJlIHRoZSBjb2xvciBpcyAqL1xuXHR3aWR0aDogMTRweDtcblx0aGVpZ2h0OiAxMnB4O1xufVxuLmRpaml0UGFsZXR0ZVRhYmxlIHRkIHtcblx0XHRwYWRkaW5nOiAwO1xufVxuLmRpaml0Q29sb3JQYWxldHRlIC5kaWppdFBhbGV0dGVDZWxsOmhvdmVyIC5kaWppdFBhbGV0dGVJbWcge1xuXHQvKiBob3ZlcmVkIGNvbG9yIHN3YXRjaCAqL1xuXHRib3JkZXI6IDFweCBzb2xpZCAjMDAwO1xufVxuXG4uZGlqaXRDb2xvclBhbGV0dGUgLmRpaml0UGFsZXR0ZUNlbGw6YWN0aXZlIC5kaWppdFBhbGV0dGVJbWcsXG4uZGlqaXRDb2xvclBhbGV0dGUgLmRpaml0UGFsZXR0ZVRhYmxlIC5kaWppdFBhbGV0dGVDZWxsU2VsZWN0ZWQgLmRpaml0UGFsZXR0ZUltZyB7XG5cdGJvcmRlcjogMnB4IHNvbGlkICMwMDA7XG5cdG1hcmdpbjogMXB4IDA7XHQvKiByZWR1Y2UgbWFyZ2luIHRvIGNvbXBlbnNhdGUgZm9yIGluY3JlYXNlZCBib3JkZXIgKi9cbn1cblxuXG4uZGpfYTExeSAuZGlqaXRDb2xvclBhbGV0dGUgLmRpaml0UGFsZXR0ZVRhYmxlLFxuLmRqX2ExMXkgLmRpaml0Q29sb3JQYWxldHRlIC5kaWppdFBhbGV0dGVUYWJsZSAqIHtcblx0LyogdGFibGUgY2VsbHMgYXJlIHRvIGNhdGNoIGV2ZW50cywgYnV0IHRoZSBzd2F0Y2hlcyBhcmUgaW4gdGhlIFBhbGV0dGVJbWcgYmVoaW5kIHRoZSB0YWJsZSAqL1xuXHRiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudCAhaW1wb3J0YW50O1xufVxuXG4vKiBBY2NvcmRpb25Db250YWluZXIgKi9cblxuLmRpaml0QWNjb3JkaW9uQ29udGFpbmVyIHtcblx0Ym9yZGVyOjFweCBzb2xpZCAjYjdiN2I3O1xuXHRib3JkZXItdG9wOjAgIWltcG9ydGFudDtcbn1cbi5kaWppdEFjY29yZGlvblRpdGxlIHtcblx0Y3Vyc29yOiBwb2ludGVyO1xuXHQtd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6IHRyYW5zcGFyZW50O1xufVxuLmRpaml0QWNjb3JkaW9uVGl0bGVTZWxlY3RlZCB7XG5cdGN1cnNvcjogZGVmYXVsdDtcbn1cblxuLyogaW1hZ2VzIG9mZiwgaGlnaC1jb250cmFzdCBtb2RlIHN0eWxlcyAqL1xuLmRpaml0QWNjb3JkaW9uVGl0bGUgLmFycm93VGV4dFVwLFxuLmRpaml0QWNjb3JkaW9uVGl0bGUgLmFycm93VGV4dERvd24ge1xuXHRkaXNwbGF5OiBub25lO1xuXHRmb250LXNpemU6IDAuNjVlbTtcblx0Zm9udC13ZWlnaHQ6IG5vcm1hbCAhaW1wb3J0YW50O1xufVxuXG4uZGpfYTExeSAuZGlqaXRBY2NvcmRpb25UaXRsZSAuYXJyb3dUZXh0VXAsXG4uZGpfYTExeSAuZGlqaXRBY2NvcmRpb25UaXRsZVNlbGVjdGVkIC5hcnJvd1RleHREb3duIHtcblx0ZGlzcGxheTogaW5saW5lO1xufVxuXG4uZGpfYTExeSAuZGlqaXRBY2NvcmRpb25UaXRsZVNlbGVjdGVkIC5hcnJvd1RleHRVcCB7XG5cdGRpc3BsYXk6IG5vbmU7XG59XG5cbi5kaWppdEFjY29yZGlvbkNoaWxkV3JhcHBlciB7XG5cdC8qIHRoaXMgaXMgdGhlIG5vZGUgd2hvc2UgaGVpZ2h0IGlzIGFkanVzdGVkICovXG5cdG92ZXJmbG93OiBoaWRkZW47XG59XG5cbi8qIENhbGVuZGFyICovXG5cbi5kaWppdENhbGVuZGFyQ29udGFpbmVyIHRhYmxlIHtcblx0d2lkdGg6IGF1dG87XHQvKiBpbiBjYXNlIHVzZXIgaGFzIHNwZWNpZmllZCBhIHdpZHRoIGZvciB0aGUgVEFCTEUgbm9kZXMsIHNlZSAjMTA1NTMgKi9cblx0Y2xlYXI6IGJvdGg7ICAgIC8qIGNsZWFyIG1hcmdpbiBjcmVhdGVkIGZvciBsZWZ0L3JpZ2h0IG1vbnRoIGFycm93czsgbmVlZGVkIG9uIElFMTAgZm9yIENhbGVuZGFyTGl0ZSAqL1xufVxuLmRpaml0Q2FsZW5kYXJDb250YWluZXIgdGgsIC5kaWppdENhbGVuZGFyQ29udGFpbmVyIHRkIHtcblx0cGFkZGluZzogMDtcblx0dmVydGljYWwtYWxpZ246IG1pZGRsZTtcbn1cblxuLmRpaml0Q2FsZW5kYXJNb250aENvbnRhaW5lciB7XG5cdHRleHQtYWxpZ246IGNlbnRlcjtcbn1cbi5kaWppdENhbGVuZGFyRGVjcmVtZW50QXJyb3cge1xuXHRmbG9hdDogbGVmdDtcbn1cbi5kaWppdENhbGVuZGFySW5jcmVtZW50QXJyb3cge1xuXHRmbG9hdDogcmlnaHQ7XG59XG5cbi5kaWppdENhbGVuZGFyWWVhckxhYmVsIHtcbiAgICB3aGl0ZS1zcGFjZTogbm93cmFwOyAgICAvKiBtYWtlIHN1cmUgcHJldmlvdXMsIGN1cnJlbnQsIGFuZCBuZXh0IHllYXIgYXBwZWFyIG9uIHNhbWUgcm93ICovXG59XG5cbi5kaWppdENhbGVuZGFyTmV4dFllYXIge1xuXHRtYXJnaW46MCAwIDAgMC41NWVtO1xufVxuXG4uZGlqaXRDYWxlbmRhclByZXZpb3VzWWVhciB7XG5cdG1hcmdpbjowIDAuNTVlbSAwIDA7XG59XG5cbi5kaWppdENhbGVuZGFySW5jcmVtZW50Q29udHJvbCB7XG5cdHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG59XG5cbi5kaWppdENhbGVuZGFySW5jcmVtZW50Q29udHJvbCxcbi5kaWppdENhbGVuZGFyRGF0ZVRlbXBsYXRlLFxuLmRpaml0Q2FsZW5kYXJNb250aExhYmVsLFxuLmRpaml0Q2FsZW5kYXJQcmV2aW91c1llYXIsXG4uZGlqaXRDYWxlbmRhck5leHRZZWFyIHtcblx0Y3Vyc29yOiBwb2ludGVyO1xuXHQtd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6IHRyYW5zcGFyZW50O1xufVxuXG4uZGlqaXRDYWxlbmRhckRpc2FibGVkRGF0ZSB7XG5cdGNvbG9yOiBncmF5O1xuXHR0ZXh0LWRlY29yYXRpb246IGxpbmUtdGhyb3VnaDtcblx0Y3Vyc29yOiBkZWZhdWx0O1xufVxuXG4uZGlqaXRTcGFjZXIge1xuXHQvKiBkb24ndCBkaXNwbGF5IGl0LCBidXQgbWFrZSBpdCBhZmZlY3QgdGhlIHdpZHRoICovXG4gIFx0cG9zaXRpb246IHJlbGF0aXZlO1xuICBcdGhlaWdodDogMXB4O1xuICBcdG92ZXJmbG93OiBoaWRkZW47XG4gIFx0dmlzaWJpbGl0eTogaGlkZGVuO1xufVxuXG4vKiBTdHlsaW5nIGZvciBtb250aCBkcm9wIGRvd24gbGlzdCAqL1xuXG4uZGlqaXRDYWxlbmRhck1vbnRoTWVudSAuZGlqaXRDYWxlbmRhck1vbnRoTGFiZWwge1xuXHR0ZXh0LWFsaWduOmNlbnRlcjtcbn1cblxuLyogTWVudSAqL1xuXG4uZGlqaXRNZW51IHtcblx0Ym9yZGVyOjFweCBzb2xpZCBibGFjaztcblx0YmFja2dyb3VuZC1jb2xvcjp3aGl0ZTtcbn1cbi5kaWppdE1lbnVUYWJsZSB7XG5cdGJvcmRlci1jb2xsYXBzZTpjb2xsYXBzZTtcblx0Ym9yZGVyLXdpZHRoOjA7XG5cdGJhY2tncm91bmQtY29sb3I6d2hpdGU7XG59XG5cbi8qIHdvcmthcm91bmQgZm9yIHdlYmtpdCBidWcgIzg0MjcsIHJlbW92ZSB0aGlzIHdoZW4gaXQgaXMgZml4ZWQgdXBzdHJlYW0gKi9cbi5kal93ZWJraXQgLmRpaml0TWVudVRhYmxlIHRkW2NvbHNwYW49XCIyXCJde1xuXHRib3JkZXItcmlnaHQ6aGlkZGVuO1xufVxuXG4uZGlqaXRNZW51SXRlbSB7XG5cdHRleHQtYWxpZ246IGxlZnQ7XG5cdHdoaXRlLXNwYWNlOiBub3dyYXA7XG5cdHBhZGRpbmc6LjFlbSAuMmVtO1xuXHRjdXJzb3I6cG9pbnRlcjtcblx0LXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOiB0cmFuc3BhcmVudDtcbn1cblxuLypcbk5vIG5lZWQgdG8gc2hvdyBhIGZvY3VzIGJvcmRlciBzaW5jZSBpdCdzIG9idmlvdXMgZnJvbSB0aGUgc2hhZGluZywgYW5kIHRoZXJlJ3MgYSAuZGpfYTExeSAuZGlqaXRNZW51SXRlbVNlbGVjdGVkXG5ydWxlIGJlbG93IHRoYXQgaGFuZGxlcyB0aGUgaGlnaCBjb250cmFzdCBjYXNlIHdoZW4gdGhlcmUncyBubyBzaGFkaW5nLlxuSGlkaW5nIHRoZSBmb2N1cyBib3JkZXIgYWxzbyB3b3JrcyBhcm91bmQgd2Via2l0IGJ1ZyBodHRwczovL2NvZGUuZ29vZ2xlLmNvbS9wL2Nocm9taXVtL2lzc3Vlcy9kZXRhaWw/aWQ9MTI1Nzc5LlxuKi9cbi5kaWppdE1lbnVJdGVtOmZvY3VzIHtcblx0b3V0bGluZTogbm9uZVxufVxuXG4uZGlqaXRNZW51UGFzc2l2ZSAuZGlqaXRNZW51SXRlbUhvdmVyLFxuLmRpaml0TWVudUl0ZW1TZWxlY3RlZCB7XG5cdC8qXG5cdCAqIGRpaml0TWVudUl0ZW1Ib3ZlciByZWZlcnMgdG8gYWN0dWFsIG1vdXNlIG92ZXJcblx0ICogZGlqaXRNZW51SXRlbVNlbGVjdGVkIGlzIHVzZWQgYWZ0ZXIgYSBtZW51IGhhcyBiZWVuIFwiYWN0aXZhdGVkXCIgYnlcblx0ICogY2xpY2tpbmcgaXQsIHRhYmJpbmcgaW50byBpdCwgb3IgYmVpbmcgb3BlbmVkIGZyb20gYSBwYXJlbnQgbWVudSxcblx0ICogYW5kIGRlbm90ZXMgdGhhdCB0aGUgbWVudSBpdGVtIGhhcyBmb2N1cyBvciB0aGF0IGZvY3VzIGlzIG9uIGEgY2hpbGRcblx0ICogbWVudVxuXHQgKi9cblx0YmFja2dyb3VuZC1jb2xvcjpibGFjaztcblx0Y29sb3I6d2hpdGU7XG59XG5cbi5kaWppdE1lbnVJdGVtSWNvbiwgLmRpaml0TWVudUV4cGFuZCB7XG5cdGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7XG59XG5cbi5kaWppdE1lbnVJdGVtRGlzYWJsZWQgKiB7XG5cdC8qIGZvciBhIGRpc2FibGVkIG1lbnUgaXRlbSwganVzdCBzZXQgaXQgdG8gbW9zdGx5IHRyYW5zcGFyZW50ICovXG5cdG9wYWNpdHk6MC41O1xuXHRjdXJzb3I6ZGVmYXVsdDtcbn1cbi5kal9pZSAuZGpfYTExeSAuZGlqaXRNZW51SXRlbURpc2FibGVkLFxuLmRqX2llIC5kal9hMTF5IC5kaWppdE1lbnVJdGVtRGlzYWJsZWQgKixcbi5kal9pZSAuZGlqaXRNZW51SXRlbURpc2FibGVkICoge1xuXHRjb2xvcjogZ3JheTtcblx0ZmlsdGVyOiBhbHBoYShvcGFjaXR5PTM1KTtcbn1cblxuLmRpaml0TWVudUl0ZW1MYWJlbCB7XG5cdHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG59XG5cbi5kal9hMTF5IC5kaWppdE1lbnVJdGVtU2VsZWN0ZWQge1xuXHRib3JkZXI6IDFweCBkb3R0ZWQgYmxhY2sgIWltcG9ydGFudDtcdC8qIGZvciAyLjAgdXNlIG91dGxpbmUgaW5zdGVhZCwgdG8gcHJldmVudCBqaXR0ZXIgKi9cbn1cblxuLmRqX2ExMXkgLmRpaml0TWVudUl0ZW1TZWxlY3RlZCAuZGlqaXRNZW51SXRlbUxhYmVsIHtcblx0Ym9yZGVyLXdpZHRoOiAxcHg7XG5cdGJvcmRlci1zdHlsZTogc29saWQ7XG59XG4uZGpfaWU4IC5kal9hMTF5IC5kaWppdE1lbnVJdGVtTGFiZWwge1xuXHRwb3NpdGlvbjpzdGF0aWM7XG59XG5cbi5kaWppdE1lbnVFeHBhbmRBMTF5IHtcblx0ZGlzcGxheTogbm9uZTtcbn1cbi5kal9hMTF5IC5kaWppdE1lbnVFeHBhbmRBMTF5IHtcblx0ZGlzcGxheTogaW5saW5lO1xufVxuXG4uZGlqaXRNZW51U2VwYXJhdG9yIHRkIHtcblx0Ym9yZGVyOiAwO1xuXHRwYWRkaW5nOiAwO1xufVxuXG4vKiBzZXBhcmF0b3IgY2FuIGJlIHR3byBwaXhlbHMgLS0gc2V0IGJvcmRlciBvZiBlaXRoZXIgb25lIHRvIDAgdG8gaGF2ZSBvbmx5IG9uZSAqL1xuLmRpaml0TWVudVNlcGFyYXRvclRvcCB7XG5cdGhlaWdodDogNTAlO1xuXHRtYXJnaW46IDA7XG5cdG1hcmdpbi10b3A6M3B4O1xuXHRmb250LXNpemU6IDFweDtcbn1cblxuLmRpaml0TWVudVNlcGFyYXRvckJvdHRvbSB7XG5cdGhlaWdodDogNTAlO1xuXHRtYXJnaW46IDA7XG5cdG1hcmdpbi1ib3R0b206M3B4O1xuXHRmb250LXNpemU6IDFweDtcbn1cblxuLyogQ2hlY2tlZE1lbnVJdGVtIGFuZCBSYWRpb01lbnVJdGVtICovXG4uZGlqaXRNZW51SXRlbUljb25DaGFyIHtcblx0ZGlzcGxheTogbm9uZTtcdFx0LyogZG9uJ3QgZGlzcGxheSBleGNlcHQgaW4gaGlnaCBjb250cmFzdCBtb2RlICovXG5cdHZpc2liaWxpdHk6IGhpZGRlbjtcdC8qIGZvciBoaWdoIGNvbnRyYXN0IG1vZGUgd2hlbiBtZW51aXRlbSBpcyB1bmNoZWNrZWQ6IGxlYXZlIHNwYWNlIGZvciB3aGVuIGl0IGlzIGNoZWNrZWQgKi9cbn1cbi5kal9hMTF5IC5kaWppdE1lbnVJdGVtSWNvbkNoYXIge1xuXHRkaXNwbGF5OiBpbmxpbmU7XHQvKiBkaXNwbGF5IGNoYXJhY3RlciBpbiBoaWdoIGNvbnRyYXN0IG1vZGUsIHNpbmNlIGljb24gZG9lc24ndCBzaG93ICovXG59XG4uZGlqaXRDaGVja2VkTWVudUl0ZW1DaGVja2VkIC5kaWppdE1lbnVJdGVtSWNvbkNoYXIsXG4uZGlqaXRSYWRpb01lbnVJdGVtQ2hlY2tlZCAuZGlqaXRNZW51SXRlbUljb25DaGFyIHtcblx0dmlzaWJpbGl0eTogdmlzaWJsZTsgLyogbWVudWl0ZW0gaXMgY2hlY2tlZCAqL1xufVxuLmRqX2llIC5kal9hMTF5IC5kaWppdE1lbnVCYXIgLmRpaml0TWVudUl0ZW0ge1xuXHQvKiBzbyBib3R0b20gYm9yZGVyIG9mIE1lbnVCYXIgYXBwZWFycyBvbiBJRTcgaW4gaGlnaC1jb250cmFzdCBtb2RlICovXG5cdG1hcmdpbjogMDtcbn1cblxuLyogU3RhY2tDb250YWluZXIgKi9cblxuLmRpaml0U3RhY2tDb250cm9sbGVyIC5kaWppdFRvZ2dsZUJ1dHRvbkNoZWNrZWQgKiB7XG5cdGN1cnNvcjogZGVmYXVsdDtcdC8qIGJlY2F1c2UgcHJlc3NpbmcgaXQgaGFzIG5vIGVmZmVjdCAqL1xufVxuXG4vKioqXG5UYWJDb250YWluZXJcblxuTWFpbiBjbGFzcyBoaWVyYXJjaHk6XG5cbi5kaWppdFRhYkNvbnRhaW5lciAtIHRoZSB3aG9sZSBUYWJDb250YWluZXJcbiAgIC5kaWppdFRhYkNvbnRyb2xsZXIgLyAuZGlqaXRUYWJMaXN0Q29udGFpbmVyLXRvcCAtIHdyYXBwZXIgZm9yIHRhYiBidXR0b25zLCBzY3JvbGwgYnV0dG9uc1xuXHQgLmRpaml0VGFiTGlzdFdyYXBwZXIgLyAuZGlqaXRUYWJDb250YWluZXJUb3BTdHJpcCAtIG91dGVyIHdyYXBwZXIgZm9yIHRhYiBidXR0b25zIChub3JtYWwgd2lkdGgpXG5cdFx0Lm5vd3JhcFRhYlN0cmlwIC8gLmRpaml0VGFiQ29udGFpbmVyVG9wLXRhYnMgLSBpbm5lciB3cmFwcGVyIGZvciB0YWIgYnV0dG9ucyAoNTBLIHdpZHRoKVxuICAgLmRpaml0VGFiUGFuZVdyYXBwZXIgLSB3cmFwcGVyIGZvciBjb250ZW50IHBhbmVzLCBoYXMgYWxsIGJvcmRlcnMgZXhjZXB0IHRoZSBvbmUgYmV0d2VlbiBjb250ZW50IGFuZCB0YWJzXG4qKiovXG5cbi5kaWppdFRhYkNvbnRhaW5lciB7XG4gICAgei1pbmRleDogMDsgLyogc28gei1pbmRleCBzZXR0aW5ncyBiZWxvdyBoYXZlIG5vIGVmZmVjdCBvdXRzaWRlIG9mIHRoZSBUYWJDb250YWluZXIgKi9cbiAgICBvdmVyZmxvdzogdmlzaWJsZTsgLyogcHJldmVudCBvZmYtYnktb25lLXBpeGVsIGVycm9ycyBmcm9tIGhpZGluZyBib3R0b20gYm9yZGVyIChvcHBvc2l0ZSB0YWIgbGFiZWxzKSAqL1xufVxuLmRqX2llNiAuZGlqaXRUYWJDb250YWluZXIge1xuICAgIC8qIHdvcmthcm91bmQgSUU2IHByb2JsZW0gd2hlbiB0YWxsIGNvbnRlbnQgb3ZlcmZsb3dzIFRhYkNvbnRhaW5lciwgc2VlIGVkaXRvci90ZXN0X0Z1bGxTY3JlZW4uaHRtbCAqL1xuICAgb3ZlcmZsb3c6IGhpZGRlbjtcblxufVxuLmRpaml0VGFiQ29udGFpbmVyTm9MYXlvdXQge1xuXHR3aWR0aDogMTAwJTtcdC8qIG90aGVyd2lzZSBTY3JvbGxpbmdUYWJDb250cm9sbGVyIGdvZXMgdG8gNTBLIHBpeGVscyB3aWRlICovXG59XG5cbi5kaWppdFRhYkNvbnRhaW5lckJvdHRvbS10YWJzLFxuLmRpaml0VGFiQ29udGFpbmVyVG9wLXRhYnMsXG4uZGlqaXRUYWJDb250YWluZXJMZWZ0LXRhYnMsXG4uZGlqaXRUYWJDb250YWluZXJSaWdodC10YWJzIHtcbiAgICB6LWluZGV4OiAxO1xuXHRvdmVyZmxvdzogdmlzaWJsZSAhaW1wb3J0YW50OyAgLyogc28gdGFicyBjYW4gY292ZXIgdXAgYm9yZGVyIGFkamFjZW50IHRvIGNvbnRhaW5lciAqL1xufVxuXG4uZGlqaXRUYWJDb250cm9sbGVyIHtcbiAgICB6LWluZGV4OiAxO1xufVxuLmRpaml0VGFiQ29udGFpbmVyQm90dG9tLWNvbnRhaW5lcixcbi5kaWppdFRhYkNvbnRhaW5lclRvcC1jb250YWluZXIsXG4uZGlqaXRUYWJDb250YWluZXJMZWZ0LWNvbnRhaW5lcixcbi5kaWppdFRhYkNvbnRhaW5lclJpZ2h0LWNvbnRhaW5lciB7XG5cdHotaW5kZXg6MDtcblx0b3ZlcmZsb3c6IGhpZGRlbjtcblx0Ym9yZGVyOiAxcHggc29saWQgYmxhY2s7XG59XG4ubm93cmFwVGFiU3RyaXAge1xuXHR3aWR0aDogNTAwMDBweDtcblx0ZGlzcGxheTogYmxvY2s7XG5cdHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICB0ZXh0LWFsaWduOiBsZWZ0OyAgLyoganVzdCBpbiBjYXNlIGFuY2VzdG9yIGhhcyBub24tc3RhbmRhcmQgc2V0dGluZyAqL1xuICAgIHotaW5kZXg6IDE7XG59XG4uZGlqaXRUYWJMaXN0V3JhcHBlciB7XG5cdG92ZXJmbG93OiBoaWRkZW47XG4gICAgei1pbmRleDogMTtcbn1cblxuLmRqX2ExMXkgLnRhYlN0cmlwQnV0dG9uIGltZyB7XG5cdC8qIGhpZGUgdGhlIGljb25zIChvciByYXRoZXIgdGhlIGVtcHR5IHNwYWNlIHdoZXJlIHRoZXkgbm9ybWFsbHkgYXBwZWFyKSBiZWNhdXNlIHRleHQgd2lsbCBhcHBlYXIgaW5zdGVhZCAqL1xuXHRkaXNwbGF5OiBub25lO1xufVxuXG4uZGlqaXRUYWJDb250YWluZXJUb3AtdGFicyB7XG5cdGJvcmRlci1ib3R0b206IDFweCBzb2xpZCBibGFjaztcbn1cbi5kaWppdFRhYkNvbnRhaW5lclRvcC1jb250YWluZXIge1xuXHRib3JkZXItdG9wOiAwO1xufVxuXG4uZGlqaXRUYWJDb250YWluZXJMZWZ0LXRhYnMge1xuXHRib3JkZXItcmlnaHQ6IDFweCBzb2xpZCBibGFjaztcblx0ZmxvYXQ6IGxlZnQ7ICAgIC8qIG5lZWRlZCBmb3IgSUU3IFJUTCBtb2RlICovXG59XG4uZGlqaXRUYWJDb250YWluZXJMZWZ0LWNvbnRhaW5lciB7XG5cdGJvcmRlci1sZWZ0OiAwO1xufVxuXG4uZGlqaXRUYWJDb250YWluZXJCb3R0b20tdGFicyB7XG5cdGJvcmRlci10b3A6IDFweCBzb2xpZCBibGFjaztcbn1cbi5kaWppdFRhYkNvbnRhaW5lckJvdHRvbS1jb250YWluZXIge1xuXHRib3JkZXItYm90dG9tOiAwO1xufVxuXG4uZGlqaXRUYWJDb250YWluZXJSaWdodC10YWJzIHtcblx0Ym9yZGVyLWxlZnQ6IDFweCBzb2xpZCBibGFjaztcblx0ZmxvYXQ6IGxlZnQ7ICAgIC8qIG5lZWRlZCBmb3IgSUU3IFJUTCBtb2RlICovXG59XG4uZGlqaXRUYWJDb250YWluZXJSaWdodC1jb250YWluZXIge1xuXHRib3JkZXItcmlnaHQ6IDA7XG59XG5cbmRpdi5kaWppdFRhYkRpc2FibGVkLCAuZGpfaWUgZGl2LmRpaml0VGFiRGlzYWJsZWQge1xuXHRjdXJzb3I6IGF1dG87XG59XG5cbi5kaWppdFRhYiB7XG5cdHBvc2l0aW9uOnJlbGF0aXZlO1xuXHRjdXJzb3I6cG9pbnRlcjtcblx0LXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOiB0cmFuc3BhcmVudDtcblx0d2hpdGUtc3BhY2U6bm93cmFwO1xuXHR6LWluZGV4OjM7XG59XG4uZGlqaXRUYWIgKiB7XG5cdC8qIG1ha2UgdGFiIGljb25zIGFuZCBjbG9zZSBpY29uIGxpbmUgdXAgdy90ZXh0ICovXG5cdHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG59XG4uZGlqaXRUYWJDaGVja2VkIHtcblx0Y3Vyc29yOiBkZWZhdWx0O1x0LyogYmVjYXVzZSBjbGlja2luZyB3aWxsIGhhdmUgbm8gZWZmZWN0ICovXG59XG5cbi5kaWppdFRhYkNvbnRhaW5lclRvcC10YWJzIC5kaWppdFRhYiB7XG5cdHRvcDogMXB4O1x0LyogdG8gb3ZlcmxhcCBib3JkZXIgb24gLmRpaml0VGFiQ29udGFpbmVyVG9wLXRhYnMgKi9cbn1cbi5kaWppdFRhYkNvbnRhaW5lckJvdHRvbS10YWJzIC5kaWppdFRhYiB7XG5cdHRvcDogLTFweDtcdC8qIHRvIG92ZXJsYXAgYm9yZGVyIG9uIC5kaWppdFRhYkNvbnRhaW5lckJvdHRvbS10YWJzICovXG59XG4uZGlqaXRUYWJDb250YWluZXJMZWZ0LXRhYnMgLmRpaml0VGFiIHtcblx0bGVmdDogMXB4O1x0LyogdG8gb3ZlcmxhcCBib3JkZXIgb24gLmRpaml0VGFiQ29udGFpbmVyTGVmdC10YWJzICovXG59XG4uZGlqaXRUYWJDb250YWluZXJSaWdodC10YWJzIC5kaWppdFRhYiB7XG5cdGxlZnQ6IC0xcHg7XHQvKiB0byBvdmVybGFwIGJvcmRlciBvbiAuZGlqaXRUYWJDb250YWluZXJSaWdodC10YWJzICovXG59XG5cblxuLmRpaml0VGFiQ29udGFpbmVyVG9wLXRhYnMgLmRpaml0VGFiLFxuLmRpaml0VGFiQ29udGFpbmVyQm90dG9tLXRhYnMgLmRpaml0VGFiIHtcblx0LyogSW5saW5lLWJsb2NrICovXG5cdGRpc3BsYXk6aW5saW5lLWJsb2NrO1x0XHRcdC8qIHdlYmtpdCBhbmQgRkYzICovXG5cdCN6b29tOiAxOyAvKiBzZXQgaGFzTGF5b3V0OnRydWUgdG8gbWltaWMgaW5saW5lLWJsb2NrICovXG5cdCNkaXNwbGF5OmlubGluZTsgLyogZG9uJ3QgdXNlIC5kal9pZSBzaW5jZSB0aGF0IGluY3JlYXNlcyB0aGUgcHJpb3JpdHkgKi9cbn1cblxuLnRhYlN0cmlwQnV0dG9uIHtcblx0ei1pbmRleDogMTI7XG59XG5cbi5kaWppdFRhYkJ1dHRvbkRpc2FibGVkIC50YWJTdHJpcEJ1dHRvbiB7XG5cdGRpc3BsYXk6IG5vbmU7XG59XG5cblxuLmRpaml0VGFiQ2xvc2VCdXR0b24ge1xuXHRtYXJnaW4tbGVmdDogMWVtO1xufVxuXG4uZGlqaXRUYWJDbG9zZVRleHQge1xuXHRkaXNwbGF5Om5vbmU7XG59XG5cbi5kaWppdFRhYiAudGFiTGFiZWwge1xuXHQvKiBtYWtlIHN1cmUgdGFicyB3L2Nsb3NlIGJ1dHRvbiBhbmQgdy9vdXQgY2xvc2UgYnV0dG9uIGFyZSBzYW1lIGhlaWdodCwgZXZlbiB3L3NtYWxsICg8MTVweCkgZm9udC5cblx0ICogYXNzdW1lcyA8PTE1cHggaGVpZ2h0IGZvciBjbG9zZSBidXR0b24gaWNvbi5cblx0ICovXG5cdG1pbi1oZWlnaHQ6IDE1cHg7XG5cdGRpc3BsYXk6IGlubGluZS1ibG9jaztcbn1cbi5kaWppdE5vSWNvbiB7XG5cdC8qIGFwcGxpZWQgdG8gPGltZz4vPHNwYW4+IG5vZGUgd2hlbiB0aGVyZSBpcyBubyBpY29uIHNwZWNpZmllZCAqL1xuXHRkaXNwbGF5OiBub25lO1xufVxuLmRqX2llNiAuZGlqaXRUYWIgLmRpaml0Tm9JY29uIHtcblx0LyogYmVjYXVzZSBtaW4taGVpZ2h0IChvbiAudGFiTGFiZWwsIGFib3ZlKSBkb2Vzbid0IHdvcmsgb24gSUU2ICovXG5cdGRpc3BsYXk6IGlubGluZTtcblx0aGVpZ2h0OiAxNXB4O1xuXHR3aWR0aDogMXB4O1xufVxuXG4vKiBpbWFnZXMgb2ZmLCBoaWdoLWNvbnRyYXN0IG1vZGUgc3R5bGVzICovXG5cbi5kal9hMTF5IC5kaWppdFRhYkNsb3NlQnV0dG9uIHtcblx0YmFja2dyb3VuZC1pbWFnZTogbm9uZSAhaW1wb3J0YW50O1xuXHR3aWR0aDogYXV0byAhaW1wb3J0YW50O1xuXHRoZWlnaHQ6IGF1dG8gIWltcG9ydGFudDtcbn1cblxuLmRqX2ExMXkgLmRpaml0VGFiQ2xvc2VUZXh0IHtcblx0ZGlzcGxheTogaW5saW5lO1xufVxuXG4uZGlqaXRUYWJQYW5lLFxuLmRpaml0U3RhY2tDb250YWluZXItY2hpbGQsXG4uZGlqaXRBY2NvcmRpb25Db250YWluZXItY2hpbGQge1xuXHQvKiBjaGlsZHJlbiBvZiBUYWJDb250YWluZXIsIFN0YWNrQ29udGFpbmVyLCBhbmQgQWNjb3JkaW9uQ29udGFpbmVyIHNob3VsZG4ndCBoYXZlIGJvcmRlcnNcblx0ICogYi9jIGEgYm9yZGVyIGlzIGFscmVhZHkgdGhlcmUgZnJvbSB0aGUgVGFiQ29udGFpbmVyL1N0YWNrQ29udGFpbmVyL0FjY29yZGlvbkNvbnRhaW5lciBpdHNlbGYuXG5cdCAqL1xuICAgIGJvcmRlcjogbm9uZSAhaW1wb3J0YW50O1xufVxuXG4vKiBJbmxpbmVFZGl0Qm94ICovXG4uZGlqaXRJbmxpbmVFZGl0Qm94RGlzcGxheU1vZGUge1xuXHRib3JkZXI6IDFweCBzb2xpZCB0cmFuc3BhcmVudDtcdC8qIHNvIGtleWxpbmUgKGJvcmRlcikgb24gaG92ZXIgY2FuIGFwcGVhciB3aXRob3V0IHNjcmVlbiBqdW1wICovXG5cdGN1cnNvcjogdGV4dDtcbn1cblxuLmRqX2ExMXkgLmRpaml0SW5saW5lRWRpdEJveERpc3BsYXlNb2RlLFxuLmRqX2llNiAuZGlqaXRJbmxpbmVFZGl0Qm94RGlzcGxheU1vZGUge1xuXHQvKiBleGNlcHQgdGhhdCBJRTYgZG9lc24ndCBzdXBwb3J0IHRyYW5zcGFyZW50IGJvcmRlcnMsIG5vciBkb2VzIGhpZ2ggY29udHJhc3QgbW9kZSAqL1xuXHRib3JkZXI6IG5vbmU7XG59XG5cbi5kaWppdElubGluZUVkaXRCb3hEaXNwbGF5TW9kZUhvdmVyLFxuLmRqX2ExMXkgLmRpaml0SW5saW5lRWRpdEJveERpc3BsYXlNb2RlSG92ZXIsXG4uZGpfaWU2IC5kaWppdElubGluZUVkaXRCb3hEaXNwbGF5TW9kZUhvdmVyIHtcblx0LyogQW4gSW5saW5lRWRpdEJveCBpbiB2aWV3IG1vZGUgKGNsaWNrIHRoaXMgdG8gZWRpdCB0aGUgdGV4dCkgKi9cblx0YmFja2dyb3VuZC1jb2xvcjogI2UyZWJmMjtcblx0Ym9yZGVyOiBzb2xpZCAxcHggYmxhY2s7XG59XG5cbi5kaWppdElubGluZUVkaXRCb3hEaXNwbGF5TW9kZURpc2FibGVkIHtcblx0Y3Vyc29yOiBkZWZhdWx0O1xufVxuXG4vKiBUcmVlICovXG4uZGlqaXRUcmVlIHtcblx0b3ZlcmZsb3c6IGF1dG87XHQvKiBmb3Igc2Nyb2xsYmFycyB3aGVuIFRyZWUgaGFzIGEgaGVpZ2h0IHNldHRpbmcsIGFuZCB0byBwcmV2ZW50IHdyYXBwaW5nIGFyb3VuZCBmbG9hdCBlbGVtZW50cywgc2VlICMxMTQ5MSAqL1xuXHQtd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6IHRyYW5zcGFyZW50O1xufVxuXG4uZGlqaXRUcmVlQ29udGFpbmVyIHtcblx0ZmxvYXQ6IGxlZnQ7XHQvKiBmb3IgY29ycmVjdCBoaWdobGlnaHRpbmcgZHVyaW5nIGhvcml6b250YWwgc2Nyb2xsLCBzZWUgIzE2MTMyICovXG59XG5cbi5kaWppdFRyZWVJbmRlbnQge1xuXHQvKiBhbW91bnQgdG8gaW5kZW50IGVhY2ggdHJlZSBub2RlIChyZWxhdGl2ZSB0byBwYXJlbnQgbm9kZSkgKi9cblx0d2lkdGg6IDE5cHg7XG59XG5cbi5kaWppdFRyZWVSb3csIC5kaWppdFRyZWVDb250ZW50IHtcblx0d2hpdGUtc3BhY2U6IG5vd3JhcDtcbn1cblxuLmRqX2llIC5kaWppdFRyZWVMYWJlbDpmb2N1cyB7XG5cdC8qIHdvcmthcm91bmQgSUU5IGJlaGF2aW9yIHdoZXJlIGRvd24gYXJyb3dpbmcgdGhyb3VnaCBUcmVlTm9kZXMgZG9lc24ndCBzaG93IGZvY3VzIG91dGxpbmUgKi9cblx0b3V0bGluZTogMXB4IGRvdHRlZCBibGFjaztcbn1cblxuLmRpaml0VHJlZVJvdyBpbWcge1xuXHQvKiBtYWtlIHRoZSBleHBhbmRvIGFuZCBmb2xkZXIgaWNvbnMgbGluZSB1cCB3aXRoIHRoZSBsYWJlbCAqL1xuXHR2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xufVxuXG4uZGlqaXRUcmVlQ29udGVudCB7XG4gICAgY3Vyc29yOiBkZWZhdWx0O1xufVxuXG4uZGlqaXRFeHBhbmRvVGV4dCB7XG5cdGRpc3BsYXk6IG5vbmU7XG59XG5cbi5kal9hMTF5IC5kaWppdEV4cGFuZG9UZXh0IHtcblx0ZGlzcGxheTogaW5saW5lO1xuXHRwYWRkaW5nLWxlZnQ6IDEwcHg7XG5cdHBhZGRpbmctcmlnaHQ6IDEwcHg7XG5cdGZvbnQtZmFtaWx5OiBtb25vc3BhY2U7XG5cdGJvcmRlci1zdHlsZTogc29saWQ7XG5cdGJvcmRlci13aWR0aDogdGhpbjtcblx0Y3Vyc29yOiBwb2ludGVyO1xufVxuXG4uZGlqaXRUcmVlTGFiZWwge1xuXHRtYXJnaW46IDAgNHB4O1xufVxuXG4vKiBEaWFsb2cgKi9cblxuLmRpaml0RGlhbG9nIHtcblx0cG9zaXRpb246IGFic29sdXRlO1xuXHR6LWluZGV4OiA5OTk7XG5cdG92ZXJmbG93OiBoaWRkZW47XHQvKiBvdmVycmlkZSBvdmVyZmxvdzogYXV0bzsgZnJvbSBDb250ZW50UGFuZSB0byBtYWtlIGRyYWdnaW5nIHNtb290aGVyICovXG59XG5cbi5kaWppdERpYWxvZ1RpdGxlQmFyIHtcblx0Y3Vyc29yOiBtb3ZlO1xufVxuLmRpaml0RGlhbG9nRml4ZWQgLmRpaml0RGlhbG9nVGl0bGVCYXIge1xuXHRjdXJzb3I6ZGVmYXVsdDtcbn1cbi5kaWppdERpYWxvZ0Nsb3NlSWNvbiB7XG5cdGN1cnNvcjogcG9pbnRlcjtcblx0LXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOiB0cmFuc3BhcmVudDtcbn1cbi5kaWppdERpYWxvZ1BhbmVDb250ZW50IHtcblx0LXdlYmtpdC1vdmVyZmxvdy1zY3JvbGxpbmc6IHRvdWNoO1xufVxuLmRpaml0RGlhbG9nVW5kZXJsYXlXcmFwcGVyIHtcblx0cG9zaXRpb246IGFic29sdXRlO1xuXHRsZWZ0OiAwO1xuXHR0b3A6IDA7XG5cdHotaW5kZXg6IDk5ODtcblx0ZGlzcGxheTogbm9uZTtcblx0YmFja2dyb3VuZDogdHJhbnNwYXJlbnQgIWltcG9ydGFudDtcbn1cblxuLmRpaml0RGlhbG9nVW5kZXJsYXkge1xuXHRiYWNrZ3JvdW5kOiAjZWVlO1xuXHRvcGFjaXR5OiAwLjU7XG59XG5cbi5kal9pZSAuZGlqaXREaWFsb2dVbmRlcmxheSB7XG5cdGZpbHRlcjogYWxwaGEob3BhY2l0eT01MCk7XG59XG5cbi8qIGltYWdlcyBvZmYsIGhpZ2gtY29udHJhc3QgbW9kZSBzdHlsZXMgKi9cbi5kal9hMTF5IC5kaWppdFNwaW5uZXJCdXR0b25Db250YWluZXIsXG4uZGpfYTExeSAuZGlqaXREaWFsb2cge1xuXHRvcGFjaXR5OiAxICFpbXBvcnRhbnQ7XG5cdGJhY2tncm91bmQtY29sb3I6IHdoaXRlICFpbXBvcnRhbnQ7XG59XG5cbi5kaWppdERpYWxvZyAuY2xvc2VUZXh0IHtcblx0ZGlzcGxheTpub25lO1xuXHQvKiBmb3IgdGhlIG9uaG92ZXIgYm9yZGVyIGluIGhpZ2ggY29udHJhc3Qgb24gSUU6ICovXG5cdHBvc2l0aW9uOmFic29sdXRlO1xufVxuXG4uZGpfYTExeSAuZGlqaXREaWFsb2cgLmNsb3NlVGV4dCB7XG5cdGRpc3BsYXk6aW5saW5lO1xufVxuXG4vKiBTbGlkZXIgKi9cblxuLmRpaml0U2xpZGVyTW92ZWFibGUge1xuXHR6LWluZGV4Ojk5O1xuXHRwb3NpdGlvbjphYnNvbHV0ZSAhaW1wb3J0YW50O1xuXHRkaXNwbGF5OmJsb2NrO1xuXHR2ZXJ0aWNhbC1hbGlnbjptaWRkbGU7XG59XG5cbi5kaWppdFNsaWRlck1vdmVhYmxlSCB7XG5cdHJpZ2h0OjA7XG59XG4uZGlqaXRTbGlkZXJNb3ZlYWJsZVYge1xuXHRyaWdodDo1MCU7XG59XG5cbi5kal9hMTF5IGRpdi5kaWppdFNsaWRlckltYWdlSGFuZGxlLFxuLmRpaml0U2xpZGVySW1hZ2VIYW5kbGUge1xuXHRtYXJnaW46MDtcblx0cGFkZGluZzowO1xuXHRwb3NpdGlvbjpyZWxhdGl2ZSAhaW1wb3J0YW50O1xuXHRib3JkZXI6OHB4IHNvbGlkIGdyYXk7XG5cdHdpZHRoOjA7XG5cdGhlaWdodDowO1xuXHRjdXJzb3I6IHBvaW50ZXI7XG5cdC13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjogdHJhbnNwYXJlbnQ7XG59XG4uZGpfaWVxdWlya3MgLmRqX2ExMXkgLmRpaml0U2xpZGVySW1hZ2VIYW5kbGUge1xuXHRmb250LXNpemU6IDA7XG59XG4uZGpfaWU3IC5kaWppdFNsaWRlckltYWdlSGFuZGxlIHtcblx0b3ZlcmZsb3c6IGhpZGRlbjsgLyogSUU3IHdvcmthcm91bmQgdG8gbWFrZSBzbGlkZXIgaGFuZGxlIFZJU0lCTEUgaW4gbm9uLWExMXkgbW9kZSAqL1xufVxuLmRqX2llNyAuZGpfYTExeSAuZGlqaXRTbGlkZXJJbWFnZUhhbmRsZSB7XG5cdG92ZXJmbG93OiB2aXNpYmxlOyAvKiBJRTcgd29ya2Fyb3VuZCB0byBtYWtlIHNsaWRlciBoYW5kbGUgVklTSUJMRSBpbiBhMTF5IG1vZGUgKi9cbn1cbi5kal9hMTF5IC5kaWppdFNsaWRlckZvY3VzZWQgLmRpaml0U2xpZGVySW1hZ2VIYW5kbGUge1xuXHRib3JkZXI6NHB4IHNvbGlkICMwMDA7XG5cdGhlaWdodDo4cHg7XG5cdHdpZHRoOjhweDtcbn1cblxuLmRpaml0U2xpZGVySW1hZ2VIYW5kbGVWIHtcblx0dG9wOi04cHg7XG5cdHJpZ2h0OiAtNTAlO1xufVxuXG4uZGlqaXRTbGlkZXJJbWFnZUhhbmRsZUgge1xuXHRsZWZ0OjUwJTtcblx0dG9wOi01cHg7XG5cdHZlcnRpY2FsLWFsaWduOnRvcDtcbn1cblxuLmRpaml0U2xpZGVyQmFyIHtcblx0Ym9yZGVyLXN0eWxlOnNvbGlkO1xuXHRib3JkZXItY29sb3I6YmxhY2s7XG5cdGN1cnNvcjogcG9pbnRlcjtcblx0LXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOiB0cmFuc3BhcmVudDtcbn1cblxuLmRpaml0U2xpZGVyQmFyQ29udGFpbmVyViB7XG5cdHBvc2l0aW9uOnJlbGF0aXZlO1xuXHRoZWlnaHQ6MTAwJTtcblx0ei1pbmRleDoxO1xufVxuXG4uZGlqaXRTbGlkZXJCYXJDb250YWluZXJIIHtcblx0cG9zaXRpb246cmVsYXRpdmU7XG5cdHotaW5kZXg6MTtcbn1cblxuLmRpaml0U2xpZGVyQmFySCB7XG5cdGhlaWdodDo0cHg7XG5cdGJvcmRlci13aWR0aDoxcHggMDtcbn1cblxuLmRpaml0U2xpZGVyQmFyViB7XG5cdHdpZHRoOjRweDtcblx0Ym9yZGVyLXdpZHRoOjAgMXB4O1xufVxuXG4uZGlqaXRTbGlkZXJQcm9ncmVzc0JhciB7XG5cdGJhY2tncm91bmQtY29sb3I6cmVkO1xuXHR6LWluZGV4OjE7XG59XG5cbi5kaWppdFNsaWRlclByb2dyZXNzQmFyViB7XG5cdHBvc2l0aW9uOnN0YXRpYyAhaW1wb3J0YW50O1xuXHRoZWlnaHQ6MDtcblx0dmVydGljYWwtYWxpZ246dG9wO1xuXHR0ZXh0LWFsaWduOmxlZnQ7XG59XG5cbi5kaWppdFNsaWRlclByb2dyZXNzQmFySCB7XG5cdHBvc2l0aW9uOmFic29sdXRlICFpbXBvcnRhbnQ7XG5cdHdpZHRoOjA7XG5cdHZlcnRpY2FsLWFsaWduOm1pZGRsZTtcblx0b3ZlcmZsb3c6dmlzaWJsZTtcbn1cblxuLmRpaml0U2xpZGVyUmVtYWluaW5nQmFyIHtcblx0b3ZlcmZsb3c6aGlkZGVuO1xuXHRiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50O1xuXHR6LWluZGV4OjE7XG59XG5cbi5kaWppdFNsaWRlclJlbWFpbmluZ0JhclYge1xuXHRoZWlnaHQ6MTAwJTtcblx0dGV4dC1hbGlnbjpsZWZ0O1xufVxuXG4uZGlqaXRTbGlkZXJSZW1haW5pbmdCYXJIIHtcblx0d2lkdGg6MTAwJSAhaW1wb3J0YW50O1xufVxuXG4vKiB0aGUgc2xpZGVyIGJ1bXBlciBpcyB0aGUgc3BhY2UgY29uc3VtZWQgYnkgdGhlIHNsaWRlciBoYW5kbGUgd2hlbiBpdCBoYW5ncyBvdmVyIGFuIGVkZ2UgKi9cbi5kaWppdFNsaWRlckJ1bXBlciB7XG5cdG92ZXJmbG93OmhpZGRlbjtcblx0ei1pbmRleDoxO1xufVxuXG4uZGlqaXRTbGlkZXJCdW1wZXJWIHtcblx0d2lkdGg6NHB4O1xuXHRoZWlnaHQ6OHB4O1xuXHRib3JkZXItd2lkdGg6MCAxcHg7XG59XG5cbi5kaWppdFNsaWRlckJ1bXBlckgge1xuXHR3aWR0aDo4cHg7XG5cdGhlaWdodDo0cHg7XG5cdGJvcmRlci13aWR0aDoxcHggMDtcbn1cblxuLmRpaml0U2xpZGVyQm90dG9tQnVtcGVyLFxuLmRpaml0U2xpZGVyTGVmdEJ1bXBlciB7XG5cdGJhY2tncm91bmQtY29sb3I6cmVkO1xufVxuXG4uZGlqaXRTbGlkZXJUb3BCdW1wZXIsXG4uZGlqaXRTbGlkZXJSaWdodEJ1bXBlciB7XG5cdGJhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnQ7XG59XG5cbi5kaWppdFNsaWRlckRlY29yYXRpb24ge1xuXHR0ZXh0LWFsaWduOmNlbnRlcjtcbn1cblxuLmRpaml0U2xpZGVyRGVjb3JhdGlvbkMsXG4uZGlqaXRTbGlkZXJEZWNvcmF0aW9uViB7XG5cdHBvc2l0aW9uOiByZWxhdGl2ZTsgLyogbmVlZGVkIGZvciBJRStxdWlya3MrUlRMK3ZlcnRpY2FsIChyZW5kZXJpbmcgYnVnKSBidXQgYWRkIGV2ZXJ5d2hlcmUgZm9yIGN1c3RvbSBzdHlsaW5nIGNvbnNpc3RlbmN5IGJ1dCB0aGlzIG1lc3NlcyB1cCBJRSBob3Jpem9udGFsIHNsaWRlcnMgKi9cbn1cblxuLmRpaml0U2xpZGVyRGVjb3JhdGlvbkgge1xuXHR3aWR0aDogMTAwJTtcbn1cblxuLmRpaml0U2xpZGVyRGVjb3JhdGlvblYge1xuXHRoZWlnaHQ6IDEwMCU7XG5cdHdoaXRlLXNwYWNlOiBub3dyYXA7XG59XG5cbi5kaWppdFNsaWRlckJ1dHRvbiB7XG5cdGZvbnQtZmFtaWx5Om1vbm9zcGFjZTtcblx0bWFyZ2luOjA7XG5cdHBhZGRpbmc6MDtcblx0ZGlzcGxheTpibG9jaztcbn1cblxuLmRqX2ExMXkgLmRpaml0U2xpZGVyQnV0dG9uSW5uZXIge1xuXHR2aXNpYmlsaXR5OnZpc2libGUgIWltcG9ydGFudDtcbn1cblxuLmRpaml0U2xpZGVyQnV0dG9uQ29udGFpbmVyIHtcblx0dGV4dC1hbGlnbjpjZW50ZXI7XG5cdGhlaWdodDowO1x0LyogPz8/ICovXG59XG4uZGlqaXRTbGlkZXJCdXR0b25Db250YWluZXIgKiB7XG5cdGN1cnNvcjogcG9pbnRlcjtcblx0LXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOiB0cmFuc3BhcmVudDtcbn1cblxuLmRpaml0U2xpZGVyIC5kaWppdEJ1dHRvbk5vZGUge1xuXHRwYWRkaW5nOjA7XG5cdGRpc3BsYXk6YmxvY2s7XG59XG5cbi5kaWppdFJ1bGVDb250YWluZXIge1xuXHRwb3NpdGlvbjpyZWxhdGl2ZTtcblx0b3ZlcmZsb3c6dmlzaWJsZTtcbn1cblxuLmRpaml0UnVsZUNvbnRhaW5lclYge1xuXHRoZWlnaHQ6MTAwJTtcblx0bGluZS1oZWlnaHQ6MDtcblx0ZmxvYXQ6bGVmdDtcblx0dGV4dC1hbGlnbjpsZWZ0O1xufVxuXG4uZGpfb3BlcmEgLmRpaml0UnVsZUNvbnRhaW5lclYge1xuXHRsaW5lLWhlaWdodDoyJTtcbn1cblxuLmRqX2llIC5kaWppdFJ1bGVDb250YWluZXJWIHtcblx0bGluZS1oZWlnaHQ6bm9ybWFsO1xufVxuXG4uZGpfZ2Vja28gLmRpaml0UnVsZUNvbnRhaW5lclYge1xuXHRtYXJnaW46MCAwIDFweCAwOyAvKiBtb3ppbGxhIGJ1ZyB3b3JrYXJvdW5kIGZvciBmbG9hdDpsZWZ0LGhlaWdodDoxMDAlIGJsb2NrIGVsZW1lbnRzICovXG59XG5cbi5kaWppdFJ1bGVNYXJrIHtcblx0cG9zaXRpb246YWJzb2x1dGU7XG5cdGJvcmRlcjoxcHggc29saWQgYmxhY2s7XG5cdGxpbmUtaGVpZ2h0OjA7XG5cdGhlaWdodDoxMDAlO1xufVxuXG4uZGlqaXRSdWxlTWFya0gge1xuXHR3aWR0aDowO1xuXHRib3JkZXItdG9wLXdpZHRoOjAgIWltcG9ydGFudDtcblx0Ym9yZGVyLWJvdHRvbS13aWR0aDowICFpbXBvcnRhbnQ7XG5cdGJvcmRlci1sZWZ0LXdpZHRoOjAgIWltcG9ydGFudDtcbn1cblxuLmRpaml0UnVsZUxhYmVsQ29udGFpbmVyIHtcblx0cG9zaXRpb246YWJzb2x1dGU7XG59XG5cbi5kaWppdFJ1bGVMYWJlbENvbnRhaW5lckgge1xuXHR0ZXh0LWFsaWduOmNlbnRlcjtcblx0ZGlzcGxheTppbmxpbmUtYmxvY2s7XG59XG5cbi5kaWppdFJ1bGVMYWJlbEgge1xuXHRwb3NpdGlvbjpyZWxhdGl2ZTtcblx0bGVmdDotNTAlO1xufVxuXG4uZGlqaXRSdWxlTGFiZWxWIHtcblx0Lyogc28gdGhhdCBsb25nIGxhYmVscyBkb24ndCBvdmVyZmxvdyB0byBtdWx0aXBsZSByb3dzLCBvciBvdmVyd3JpdGUgc2xpZGVyIGl0c2VsZiAqL1xuXHR0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcblx0d2hpdGUtc3BhY2U6IG5vd3JhcDtcblx0b3ZlcmZsb3c6IGhpZGRlbjtcbn1cblxuLmRpaml0UnVsZU1hcmtWIHtcblx0aGVpZ2h0OjA7XG5cdGJvcmRlci1yaWdodC13aWR0aDowICFpbXBvcnRhbnQ7XG5cdGJvcmRlci1ib3R0b20td2lkdGg6MCAhaW1wb3J0YW50O1xuXHRib3JkZXItbGVmdC13aWR0aDowICFpbXBvcnRhbnQ7XG5cdHdpZHRoOjEwMCU7XG5cdGxlZnQ6MDtcbn1cblxuLmRqX2llIC5kaWppdFJ1bGVMYWJlbENvbnRhaW5lclYge1xuXHRtYXJnaW4tdG9wOi0uNTVlbTtcbn1cblxuLmRqX2ExMXkgLmRpaml0U2xpZGVyUmVhZE9ubHksXG4uZGpfYTExeSAuZGlqaXRTbGlkZXJEaXNhYmxlZCB7XG5cdG9wYWNpdHk6MC42O1xufVxuLmRqX2llIC5kal9hMTF5IC5kaWppdFNsaWRlclJlYWRPbmx5IC5kaWppdFNsaWRlckJhcixcbi5kal9pZSAuZGpfYTExeSAuZGlqaXRTbGlkZXJEaXNhYmxlZCAuZGlqaXRTbGlkZXJCYXIge1xuXHRmaWx0ZXI6IGFscGhhKG9wYWNpdHk9NDApO1xufVxuXG4vKiArIGFuZCAtIFNsaWRlciBidXR0b25zOiBvdmVycmlkZSB0aGVtZSBzZXR0aW5ncyB0byBkaXNwbGF5IGljb25zICovXG4uZGpfYTExeSAuZGlqaXRTbGlkZXIgLmRpaml0U2xpZGVyQnV0dG9uQ29udGFpbmVyIGRpdiB7XG5cdGZvbnQtZmFtaWx5OiBtb25vc3BhY2U7IC8qIG90aGVyd2lzZSBoeXBoZW4gaXMgbGFyZ2VyIGFuZCBtb3JlIHZlcnRpY2FsbHkgY2VudGVyZWQgKi9cblx0Zm9udC1zaXplOiAxZW07XG5cdGxpbmUtaGVpZ2h0OiAxZW07XG5cdGhlaWdodDogYXV0bztcblx0d2lkdGg6IGF1dG87XG5cdG1hcmdpbjogMCA0cHg7XG59XG5cbi8qIEljb24tb25seSBidXR0b25zIChvZnRlbiBpbiB0b29sYmFycykgc3RpbGwgZGlzcGxheSB0aGUgdGV4dCBpbiBoaWdoLWNvbnRyYXN0IG1vZGUgKi9cbi5kal9hMTF5IC5kaWppdEJ1dHRvbkNvbnRlbnRzIC5kaWppdEJ1dHRvblRleHQsXG4uZGpfYTExeSAuZGlqaXRUYWIgLnRhYkxhYmVsIHtcblx0ZGlzcGxheTogaW5saW5lICFpbXBvcnRhbnQ7XG59XG4uZGpfYTExeSAuZGlqaXRTZWxlY3QgLmRpaml0QnV0dG9uVGV4dCB7XG5cdGRpc3BsYXk6IGlubGluZS1ibG9jayAhaW1wb3J0YW50O1xufVxuXG4vKiBUZXh0QXJlYSwgU2ltcGxlVGV4dEFyZWEgKi9cbi5kaWppdFRleHRBcmVhIHtcblx0d2lkdGg6MTAwJTtcblx0b3ZlcmZsb3cteTogYXV0bztcdC8qIHcvb3V0IHRoaXMgSUUncyBTaW1wbGVUZXh0QXJlYSBnb2VzIHRvIG92ZXJmbG93OiBzY3JvbGwgKi9cbn1cbi5kaWppdFRleHRBcmVhW2NvbHNdIHtcblx0d2lkdGg6YXV0bzsgLyogU2ltcGxlVGV4dEFyZWEgY29scyAqL1xufVxuLmRqX2llIC5kaWppdFRleHRBcmVhQ29scyB7XG5cdHdpZHRoOmF1dG87XG59XG5cbi5kaWppdEV4cGFuZGluZ1RleHRBcmVhIHtcblx0LyogZm9yIGF1dG8gZXhhbmRpbmcgdGV4dGFyZWEgKGNhbGxlZCBUZXh0YXJlYSBjdXJyZW50bHksIHJlbmFtZSBmb3IgMi4wKSBkb24ndCB3YW50IHRvIGRpc3BsYXkgdGhlIGdyaXAgdG8gcmVzaXplICovXG5cdHJlc2l6ZTogbm9uZTtcbn1cblxuXG4vKiBUb29sYmFyXG4gKiBOb3RlIHRoYXQgb3RoZXIgdG9vbGJhciBydWxlcyAoZm9yIG9iamVjdHMgaW4gdG9vbGJhcnMpIGFyZSBzY2F0dGVyZWQgdGhyb3VnaG91dCB0aGlzIGZpbGUuXG4gKi9cblxuLmRpaml0VG9vbGJhclNlcGFyYXRvciB7XG5cdGhlaWdodDogMThweDtcblx0d2lkdGg6IDVweDtcblx0cGFkZGluZzogMCAxcHg7XG5cdG1hcmdpbjogMDtcbn1cblxuLyogRWRpdG9yICovXG4uZGlqaXRJRUZpeGVkVG9vbGJhciB7XG5cdHBvc2l0aW9uOmFic29sdXRlO1xuXHQvKiB0b3A6MDsgKi9cblx0dG9wOiBleHByZXNzaW9uKGV2YWwoKGRvY3VtZW50LmRvY3VtZW50RWxlbWVudHx8ZG9jdW1lbnQuYm9keSkuc2Nyb2xsVG9wKSk7XG59XG5cbi5kaWppdEVkaXRvciB7XG5cdGRpc3BsYXk6IGJsb2NrO1x0LyogcHJldmVudHMgZ2xpdGNoIG9uIEZGIHdpdGggSW5saW5lRWRpdEJveCwgc2VlICM4NDA0ICovXG59XG5cbi5kaWppdEVkaXRvckRpc2FibGVkLFxuLmRpaml0RWRpdG9yUmVhZE9ubHkge1xuXHRjb2xvcjogZ3JheTtcbn1cblxuLyogVGltZVBpY2tlciAqL1xuXG4uZGlqaXRUaW1lUGlja2VyIHtcblx0YmFja2dyb3VuZC1jb2xvcjogd2hpdGU7XG59XG4uZGlqaXRUaW1lUGlja2VySXRlbSB7XG5cdGN1cnNvcjpwb2ludGVyO1xuXHQtd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6IHRyYW5zcGFyZW50O1xufVxuLmRpaml0VGltZVBpY2tlckl0ZW1Ib3ZlciB7XG5cdGJhY2tncm91bmQtY29sb3I6Z3JheTtcblx0Y29sb3I6d2hpdGU7XG59XG4uZGlqaXRUaW1lUGlja2VySXRlbVNlbGVjdGVkIHtcblx0Zm9udC13ZWlnaHQ6Ym9sZDtcblx0Y29sb3I6IzMzMztcblx0YmFja2dyb3VuZC1jb2xvcjojYjdjZGVlO1xufVxuLmRpaml0VGltZVBpY2tlckl0ZW1EaXNhYmxlZCB7XG5cdGNvbG9yOmdyYXk7XG5cdHRleHQtZGVjb3JhdGlvbjpsaW5lLXRocm91Z2g7XG59XG5cbi5kaWppdFRpbWVQaWNrZXJJdGVtSW5uZXIge1xuXHR0ZXh0LWFsaWduOmNlbnRlcjtcblx0Ym9yZGVyOjA7XG5cdHBhZGRpbmc6MnB4IDhweCAycHggOHB4O1xufVxuXG4uZGlqaXRUaW1lUGlja2VyVGljayxcbi5kaWppdFRpbWVQaWNrZXJNYXJrZXIge1xuXHRib3JkZXItYm90dG9tOjFweCBzb2xpZCBncmF5O1xufVxuXG4uZGlqaXRUaW1lUGlja2VyIC5kaWppdERvd25BcnJvd0J1dHRvbiB7XG5cdGJvcmRlci10b3A6IG5vbmUgIWltcG9ydGFudDtcbn1cblxuLmRpaml0VGltZVBpY2tlclRpY2sge1xuXHRjb2xvcjojQ0NDO1xufVxuXG4uZGlqaXRUaW1lUGlja2VyTWFya2VyIHtcblx0Y29sb3I6YmxhY2s7XG5cdGJhY2tncm91bmQtY29sb3I6I0NDQztcbn1cblxuLmRqX2ExMXkgLmRpaml0VGltZVBpY2tlckl0ZW1TZWxlY3RlZCAuZGlqaXRUaW1lUGlja2VySXRlbUlubmVyIHtcblx0Ym9yZGVyOiBzb2xpZCA0cHggYmxhY2s7XG59XG4uZGpfYTExeSAuZGlqaXRUaW1lUGlja2VySXRlbUhvdmVyIC5kaWppdFRpbWVQaWNrZXJJdGVtSW5uZXIge1xuXHRib3JkZXI6IGRhc2hlZCA0cHggYmxhY2s7XG59XG5cblxuLmRpaml0VG9nZ2xlQnV0dG9uSWNvbkNoYXIge1xuXHQvKiBjaGFyYWN0ZXIgKGluc3RlYWQgb2YgaWNvbikgdG8gc2hvdyB0aGF0IFRvZ2dsZUJ1dHRvbiBpcyBjaGVja2VkICovXG5cdGRpc3BsYXk6bm9uZSAhaW1wb3J0YW50O1xufVxuLmRqX2ExMXkgLmRpaml0VG9nZ2xlQnV0dG9uIC5kaWppdFRvZ2dsZUJ1dHRvbkljb25DaGFyIHtcblx0ZGlzcGxheTppbmxpbmUgIWltcG9ydGFudDtcblx0dmlzaWJpbGl0eTpoaWRkZW47XG59XG4uZGpfaWU2IC5kaWppdFRvZ2dsZUJ1dHRvbkljb25DaGFyLCAuZGpfaWU2IC50YWJTdHJpcEJ1dHRvbiAuZGlqaXRCdXR0b25UZXh0IHtcblx0Zm9udC1mYW1pbHk6IFwiQXJpYWwgVW5pY29kZSBNU1wiO1x0Lyogb3RoZXJ3aXNlIHRoZSBhMTF5IGNoYXJhY3RlciAoY2hlY2ttYXJrLCBhcnJvdywgZXRjLikgYXBwZWFycyBhcyBhIGJveCAqL1xufVxuLmRqX2ExMXkgLmRpaml0VG9nZ2xlQnV0dG9uQ2hlY2tlZCAuZGlqaXRUb2dnbGVCdXR0b25JY29uQ2hhciB7XG5cdGRpc3BsYXk6IGlubGluZSAhaW1wb3J0YW50OyAvKiBJbiBoaWdoIGNvbnRyYXN0IG1vZGUsIGRpc3BsYXkgdGhlIGNoZWNrIHN5bWJvbCAqL1xuXHR2aXNpYmlsaXR5OnZpc2libGUgIWltcG9ydGFudDtcbn1cblxuLmRpaml0QXJyb3dCdXR0b25DaGFyIHtcblx0ZGlzcGxheTpub25lICFpbXBvcnRhbnQ7XG59XG4uZGpfYTExeSAuZGlqaXRBcnJvd0J1dHRvbkNoYXIge1xuXHRkaXNwbGF5OmlubGluZSAhaW1wb3J0YW50O1xufVxuXG4uZGpfYTExeSAuZGlqaXREcm9wRG93bkJ1dHRvbiAuZGlqaXRBcnJvd0J1dHRvbklubmVyLFxuLmRqX2ExMXkgLmRpaml0Q29tYm9CdXR0b24gLmRpaml0QXJyb3dCdXR0b25Jbm5lciB7XG5cdGRpc3BsYXk6bm9uZSAhaW1wb3J0YW50O1xufVxuXG4vKiBTZWxlY3QgKi9cbi5kal9hMTF5IC5kaWppdFNlbGVjdCB7XG5cdGJvcmRlci1jb2xsYXBzZTogc2VwYXJhdGUgIWltcG9ydGFudDtcblx0Ym9yZGVyLXdpZHRoOiAxcHg7XG5cdGJvcmRlci1zdHlsZTogc29saWQ7XG59XG4uZGpfaWUgLmRpaml0U2VsZWN0IHtcblx0dmVydGljYWwtYWxpZ246IG1pZGRsZTsgLyogU2V0IHRoaXMgYmFjayBmb3Igd2hhdCB3ZSBoYWNrIGluIGRpaml0IGlubGluZSAqL1xufVxuLmRqX2llNiAuZGlqaXRTZWxlY3QgLmRpaml0VmFsaWRhdGlvbkNvbnRhaW5lcixcbi5kal9pZTggLmRpaml0U2VsZWN0IC5kaWppdEJ1dHRvblRleHQge1xuXHR2ZXJ0aWNhbC1hbGlnbjogdG9wO1xufVxuLmRqX2llNiAuZGlqaXRUZXh0Qm94IC5kaWppdElucHV0Q29udGFpbmVyLFxuLmRqX2llcXVpcmtzIC5kaWppdFRleHRCb3ggLmRpaml0SW5wdXRDb250YWluZXIsXG4uZGpfaWU2IC5kaWppdFRleHRCb3ggLmRpaml0QXJyb3dCdXR0b25Jbm5lcixcbi5kal9pZTYgLmRpaml0U3Bpbm5lciAuZGlqaXRTcGlubmVyQnV0dG9uSW5uZXIsXG4uZGlqaXRTZWxlY3QgLmRpaml0U2VsZWN0TGFiZWwge1xuXHR2ZXJ0aWNhbC1hbGlnbjogYmFzZWxpbmU7XG59XG5cbi5kaWppdE51bWJlclRleHRCb3gge1xuXHR0ZXh0LWFsaWduOiBsZWZ0O1xuXHRkaXJlY3Rpb246IGx0cjtcbn1cblxuLmRpaml0TnVtYmVyVGV4dEJveCAuZGlqaXRJbnB1dElubmVyIHtcblx0dGV4dC1hbGlnbjogaW5oZXJpdDsgLyogaW5wdXQgKi9cbn1cblxuLmRpaml0TnVtYmVyVGV4dEJveCBpbnB1dC5kaWppdElucHV0SW5uZXIsXG4uZGlqaXRDdXJyZW5jeVRleHRCb3ggaW5wdXQuZGlqaXRJbnB1dElubmVyLFxuLmRpaml0U3Bpbm5lciBpbnB1dC5kaWppdElucHV0SW5uZXIge1xuXHR0ZXh0LWFsaWduOiByaWdodDtcbn1cblxuLmRqX2llOCAuZGlqaXROdW1iZXJUZXh0Qm94IGlucHV0LmRpaml0SW5wdXRJbm5lciwgLmRqX2llOSAuZGlqaXROdW1iZXJUZXh0Qm94IGlucHV0LmRpaml0SW5wdXRJbm5lcixcbi5kal9pZTggLmRpaml0Q3VycmVuY3lUZXh0Qm94IGlucHV0LmRpaml0SW5wdXRJbm5lciwgLmRqX2llOSAuZGlqaXRDdXJyZW5jeVRleHRCb3ggaW5wdXQuZGlqaXRJbnB1dElubmVyLFxuLmRqX2llOCAuZGlqaXRTcGlubmVyIGlucHV0LmRpaml0SW5wdXRJbm5lciwgLmRqX2llOSAuZGlqaXRTcGlubmVyIGlucHV0LmRpaml0SW5wdXRJbm5lciB7XG5cdC8qIHdvcmthcm91bmQgYnVnIHdoZXJlIGNhcmV0IGludmlzaWJsZSBpbiBlbXB0eSB0ZXh0Ym94ZXMgKi9cblx0cGFkZGluZy1yaWdodDogMXB4ICFpbXBvcnRhbnQ7XG59XG5cbi5kaWppdFRvb2xiYXIgLmRpaml0U2VsZWN0IHtcblx0bWFyZ2luOiAwO1xufVxuLmRqX3dlYmtpdCAuZGlqaXRUb29sYmFyIC5kaWppdFNlbGVjdCB7XG5cdHBhZGRpbmctbGVmdDogMC4zZW07XG59XG4uZGlqaXRTZWxlY3QgLmRpaml0QnV0dG9uQ29udGVudHMge1xuXHRwYWRkaW5nOiAwO1xuXHR3aGl0ZS1zcGFjZTogbm93cmFwO1xuXHR0ZXh0LWFsaWduOiBsZWZ0O1xuXHRib3JkZXItc3R5bGU6IG5vbmUgc29saWQgbm9uZSBub25lO1xuXHRib3JkZXItd2lkdGg6IDFweDtcbn1cbi5kaWppdFNlbGVjdEZpeGVkV2lkdGggLmRpaml0QnV0dG9uQ29udGVudHMge1xuXHR3aWR0aDogMTAwJTtcbn1cblxuLmRpaml0U2VsZWN0TWVudSAuZGlqaXRNZW51SXRlbUljb24ge1xuXHQvKiBhdm9pZCBibGFuayBhcmVhIGluIGxlZnQgc2lkZSBvZiBtZW51IChzaW5jZSB3ZSBoYXZlIG5vIGljb25zKSAqL1xuXHRkaXNwbGF5Om5vbmU7XG59XG4uZGpfaWU2IC5kaWppdFNlbGVjdE1lbnUgLmRpaml0TWVudUl0ZW1MYWJlbCxcbi5kal9pZTcgLmRpaml0U2VsZWN0TWVudSAuZGlqaXRNZW51SXRlbUxhYmVsIHtcblx0LyogU2V0IGJhY2sgdG8gc3RhdGljIGR1ZSB0byBidWcgaW4gaWU2L2llNyAtIFNlZSBCdWcgIzk2NTEgKi9cblx0cG9zaXRpb246IHN0YXRpYztcbn1cblxuLyogRml4IHRoZSBiYXNlbGluZSBvZiBvdXIgbGFiZWwgKGZvciBtdWx0aS1zaXplIGZvbnQgZWxlbWVudHMpICovXG4uZGlqaXRTZWxlY3RMYWJlbCAqXG57XG5cdHZlcnRpY2FsLWFsaWduOiBiYXNlbGluZTtcbn1cblxuLyogU3R5bGluZyBmb3IgdGhlIGN1cnJlbnRseS1zZWxlY3RlZCBvcHRpb24gKHJpY2ggdGV4dCBjYW4gbWVzcyB0aGlzIHVwKSAqL1xuLmRpaml0U2VsZWN0U2VsZWN0ZWRPcHRpb24gKiB7XG5cdGZvbnQtd2VpZ2h0OiBib2xkO1xufVxuXG4vKiBGaXggdGhlIHN0eWxpbmcgb2YgdGhlIGRyb3Bkb3duIG1lbnUgdG8gYmUgbW9yZSBjb21ib2JveC1saWtlICovXG4uZGlqaXRTZWxlY3RNZW51IHtcblx0Ym9yZGVyLXdpZHRoOiAxcHg7XG59XG5cbi8qIFVzZWQgaW4gY2FzZXMsIHN1Y2ggYXMgRnVsbFNjcmVlbiBwbHVnaW4sIHdoZW4gd2UgbmVlZCB0byBmb3JjZSBzdHVmZiB0byBzdGF0aWMgcG9zaXRpb25pbmcuICovXG4uZGlqaXRGb3JjZVN0YXRpYyB7XG5cdHBvc2l0aW9uOiBzdGF0aWMgIWltcG9ydGFudDtcbn1cblxuLyoqKiogRGlzYWJsZWQgY3Vyc29yICoqKioqL1xuLmRpaml0UmVhZE9ubHkgKixcbi5kaWppdERpc2FibGVkICosXG4uZGlqaXRSZWFkT25seSxcbi5kaWppdERpc2FibGVkIHtcblx0LyogYSByZWdpb24gdGhlIHVzZXIgd291bGQgYmUgYWJsZSB0byBjbGljayBvbiwgYnV0IGl0J3MgZGlzYWJsZWQgKi9cblx0Y3Vyc29yOiBkZWZhdWx0O1xufVxuXG4vKiBEcmFnIGFuZCBEcm9wICovXG4uZG9qb0RuZEl0ZW0ge1xuICAgIHBhZGRpbmc6IDJweDsgIC8qIHdpbGwgYmUgcmVwbGFjZWQgYnkgYm9yZGVyIGR1cmluZyBkcmFnIG92ZXIgKGRvam9EbmRJdGVtQmVmb3JlLCBkb2pvRG5kSXRlbUFmdGVyKSAqL1xuXG5cdC8qIFByZXZlbnQgbWFnbmlmeWluZy1nbGFzcyB0ZXh0IHNlbGVjdGlvbiBpY29uIHRvIGFwcGVhciBvbiBtb2JpbGUgd2Via2l0IGFzIGl0IGNhdXNlcyBhIHRvdWNob3V0IGV2ZW50ICovXG5cdC13ZWJraXQtdG91Y2gtY2FsbG91dDogbm9uZTtcblx0LXdlYmtpdC11c2VyLXNlbGVjdDogbm9uZTsgLyogRGlzYWJsZSBzZWxlY3Rpb24vQ29weSBvZiBVSVdlYlZpZXcgKi9cbn1cbi5kb2pvRG5kSG9yaXpvbnRhbCAuZG9qb0RuZEl0ZW0ge1xuICAgIC8qIG1ha2UgY29udGVudHMgb2YgaG9yaXpvbnRhbCBjb250YWluZXIgYmUgc2lkZSBieSBzaWRlLCByYXRoZXIgdGhhbiB2ZXJ0aWNhbCAqL1xuICAgICNkaXNwbGF5OiBpbmxpbmU7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xufVxuXG4uZG9qb0RuZEl0ZW1CZWZvcmUsXG4uZG9qb0RuZEl0ZW1BZnRlciB7XG5cdGJvcmRlcjogMHB4IHNvbGlkICMzNjk7XG59XG4uZG9qb0RuZEl0ZW1CZWZvcmUge1xuICAgIGJvcmRlci13aWR0aDogMnB4IDAgMCAwO1xuICAgIHBhZGRpbmc6IDAgMnB4IDJweCAycHg7XG59XG4uZG9qb0RuZEl0ZW1BZnRlciB7XG4gICAgYm9yZGVyLXdpZHRoOiAwIDAgMnB4IDA7XG4gICAgcGFkZGluZzogMnB4IDJweCAwIDJweDtcbn1cbi5kb2pvRG5kSG9yaXpvbnRhbCAuZG9qb0RuZEl0ZW1CZWZvcmUge1xuICAgIGJvcmRlci13aWR0aDogMCAwIDAgMnB4O1xuICAgIHBhZGRpbmc6IDJweCAycHggMnB4IDA7XG59XG4uZG9qb0RuZEhvcml6b250YWwgLmRvam9EbmRJdGVtQWZ0ZXIge1xuICAgIGJvcmRlci13aWR0aDogMCAycHggMCAwO1xuICAgIHBhZGRpbmc6IDJweCAwIDJweCAycHg7XG59XG5cbi5kb2pvRG5kSXRlbU92ZXIge1xuXHRjdXJzb3I6cG9pbnRlcjtcbn1cbi5kal9nZWNrbyAuZGlqaXRBcnJvd0J1dHRvbklubmVyIElOUFVULFxuLmRqX2dlY2tvIElOUFVULmRpaml0QXJyb3dCdXR0b25Jbm5lciB7XG5cdC1tb3otdXNlci1mb2N1czppZ25vcmU7XG59XG4uZGlqaXRGb2N1c2VkIC5kaWppdE1lbnVJdGVtU2hvcnRjdXRLZXkge1xuXHR0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTtcbn1cbiIsIi8qIERpaml0IGN1c3RvbSBzdHlsaW5nICovXG4uZGlqaXRCb3JkZXJDb250YWluZXIge1xuICAgIGhlaWdodDogMzUwcHg7XG59XG4uZGlqaXRUb29sdGlwQ29udGFpbmVyIHtcbiAgICBiYWNrZ3JvdW5kOiAjZmZmO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkICNjY2M7XG4gICAgYm9yZGVyLXJhZGl1czogNnB4O1xufVxuLmRpaml0Q29udGVudFBhbmUge1xuICAgIGJveC1zaXppbmc6IGNvbnRlbnQtYm94O1xuICAgIG92ZXJmbG93OiBhdXRvICFpbXBvcnRhbnQ7IC8qIFdpZGdldHMgbGlrZSB0aGUgZGF0YSBncmlkIHBhc3MgdGhlaXIgc2Nyb2xsXG4gICAgb2Zmc2V0IHRvIHRoZSBwYXJlbnQgaWYgdGhlcmUgaXMgbm90IGVub3VnaCByb29tIHRvIGRpc3BsYXkgYSBzY3JvbGwgYmFyXG4gICAgaW4gdGhlIHdpZGdldCBpdHNlbGYsIHNvIGRvIG5vdCBoaWRlIHRoZSBvdmVyZmxvdy4gKi9cbn1cblxuLyogR2xvYmFsIEJvb3RzdHJhcCBjaGFuZ2VzICovXG5cbi8qIENsaWVudCBkZWZhdWx0cyBhbmQgaGVscGVycyAqL1xuLm14LWRhdGF2aWV3LWNvbnRlbnQsIC5teC1zY3JvbGxjb250YWluZXItd3JhcHBlcjpub3QoLm14LXNjcm9sbGNvbnRhaW5lci1uZXN0ZWQpLCAubXgtdGFiY29udGFpbmVyLWNvbnRlbnQsIC5teC1ncmlkLWNvbnRlbnQge1xuICAgIC13ZWJraXQtb3ZlcmZsb3ctc2Nyb2xsaW5nOiB0b3VjaDtcbn1cbmh0bWwsIGJvZHksICNjb250ZW50IHtcbiAgICBoZWlnaHQ6IDEwMCU7XG59XG4jY29udGVudCA+IC5teC1wYWdlIHtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBtaW4taGVpZ2h0OiAxMDAlO1xufVxuXG4ubXgtbGVmdC1hbGlnbmVkIHtcbiAgICB0ZXh0LWFsaWduOiBsZWZ0O1xufVxuLm14LXJpZ2h0LWFsaWduZWQge1xuICAgIHRleHQtYWxpZ246IHJpZ2h0O1xufVxuLm14LWNlbnRlci1hbGlnbmVkIHtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG59XG5cbi5teC10YWJsZSB7XG4gICAgd2lkdGg6IDEwMCU7XG59XG4ubXgtdGFibGUgdGgsXG4ubXgtdGFibGUgdGQge1xuICAgIHBhZGRpbmc6IDhweDtcbiAgICB2ZXJ0aWNhbC1hbGlnbjogdG9wO1xufVxuLm14LXRhYmxlIHRoLm5vcGFkZGluZyxcbi5teC10YWJsZSB0ZC5ub3BhZGRpbmcge1xuXHRwYWRkaW5nOiAwO1xufVxuXG4ubXgtb2Zmc2NyZWVuIHtcbiAgICAvKiBXaGVuIHBvc2l0aW9uIHJlbGF0aXZlIGlzIG5vdCBzZXQgSUUgZG9lc24ndCBwcm9wZXJseSByZW5kZXIgd2hlbiB0aGlzIGNsYXNzIGlzIHJlbW92ZWRcbiAgICAgKiB3aXRoIHRoZSBlZmZlY3QgdGhhdCBlbGVtZW50cyBhcmUgbm90IGRpc3BsYXllZCBvciBhcmUgbm90IGNsaWNrYWJsZS5cbiAgICAqL1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBoZWlnaHQ6IDA7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cblxuLm14LWllLWV2ZW50LXNoaWVsZCB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRvcDogMDtcbiAgICBsZWZ0OiAwO1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGhlaWdodDogMTAwJTtcbiAgICB6LWluZGV4OiAtMTtcbn1cblxuLm14LXN3aXBlLW5hdmlnYXRpb24tcHJvZ3Jlc3Mge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICBoZWlnaHQ6IDU0cHg7XG4gICAgd2lkdGg6IDU0cHg7XG4gICAgdG9wOiBjYWxjKDUwJSAtIDI3cHgpO1xuICAgIGxlZnQ6IGNhbGMoNTAlIC0gMjdweCk7XG4gICAgYmFja2dyb3VuZDogdXJsKGRhdGE6aW1hZ2UvZ2lmO2Jhc2U2NCxSMGxHT0RsaE5nQTJBUE1BQVAvLy93QUFBSGg0ZUJ3Y0hBNE9EdGpZMkZSVVZOemMzTVRFeEVoSVNJcUtpZ0FBQUFBQUFBQUFBQUFBQUFBQUFDSDVCQWtLQUFBQUlmNGFRM0psWVhSbFpDQjNhWFJvSUdGcVlYaHNiMkZrTG1sdVptOEFJZjhMVGtWVVUwTkJVRVV5TGpBREFRQUFBQ3dBQUFBQU5nQTJBQUFFeXhESVNhdTlPT3ZOdS85Z0tJNWt5U0VKUVNTSTZVcUtLaFBLV3lMejNOcGltcXNKbnVnM0U0YUlNaVBJOXdzcVBUamlUbGt3cUF3RlRDeFhleFlHczBIMmdnSk9MWUxCUURDeTVnd213WXg5SkpyQXNzSFFYc0tyOUNGdU0zQWxjakowSUFkK0JBTUhMbWxySkFkdUJvNVBsNWlabXB1Y25aNmZjV3FJbUpDamFIT1poaXFtRkl1QWw2NFpzWml6RjZvRXJFSzN1Uk9sbTc2Z3djTER4TVhHeDhYQWo2SWt1NCtvSXJVazBoL1UwV0Vqem5IUUlzcWhrY2pCM3NuY3hkYkM1K0xseWN6aDdrOFJBQ0g1QkFrS0FBQUFMQUFBQUFBMkFEWUFBQVRNRU1oSnE3MDQ2ODI3LzJBb2ptUnBubVZoRUlSUm9HY3hzT3p3d3VSS3N3Wk83anZmQ0VnVGluUzduaEYwbU5FR2h3c2l3VW9nbHBTRHpoQzFLSWlLa1dBd0VKZ1FSTllWSk5pWlNkUjBJdVNzbGRKRlVKMHd1T01KSVcwMGJ5TnhSSE9CWklRamFHbHJXQnhmUUdHUUhsTlZqNVdhbTV5ZG5wOUxZMldib29zV2dpeW1RcWdFcWhON2ZaQ3dHYk95TzdFWHJLNDR1aHFscElxZ3dzUEV4Y2JIeU1lL0tNc2l2U2JQZExjbnRkSlAxTlBPYmlmUmlhUE13Y25DemNyYnlOWEc2TVhkeHVUaTd6NFJBQ0g1QkFrS0FBQUFMQUFBQUFBMkFEWUFBQVRPRU1oSnE3MDQ2ODI3LzJBb2ptUnBubWlxQXNJd0NLc3BFRFFCeCtOUUV3T2U3ejFmYUZhN0NVR3QxMUZZTU5BTUJWTFNTQ3JvYW9Qb2NFY1ZPWGNFZytoS0M1TEF0VEhRaEthSmlMUnU2THNUdjEzeTBJSE1PeXc5QjE4R2ZuK0Zob2VJaVlvWkNBazBDUWlMRmdwb0NobFRSd2h0QkpFV2NEWkNqbTBKRjN4bU1adHVGcVpDcVFRWG4za29vbWlrc0hpWm01MlNBSlJnbHJ3VGpZKzd3Y2JIeU1uS0U1Z296VzljSjdFL1dDZXNhdFVtMTF0RjB0RWp6eks0eTRuaHh0UEkyOGJxd2VqSTV1VHhKaEVBSWZrRUNRb0FBQUFzQUFBQUFEWUFOZ0FBQk1zUXlFbXJ2VGpyemJ2L1lDaU9aR21lYUtvQ3dqQUlxeWtRTkFISDQxQVRBNTd2UFY5b1Zyc0pRYTNYY1lsS0dtV3VKM0luRlJGcDFZNnVGaXh0YVYzUWwzY2FoejlYMnltZDdUaFRiNlo4VHEvYjcvaTh2R0NnR1FvYWNVSUZab0FYYkVkOU93UUdHR1pIaXpXT1FKQ1JCQmlJUW9vN2paaFJTd2RtQjNvVUI0b0dvNlNxcTZ5dE1RZ0pOQWtJckFxUkNpT0NJd2lXQkxSVFJTV3hsZ2toanlTOU5NYVV5TWxEVk1LOXhVT2ZKYnlXdjNxMmk3aEx1aFd3c3RsQ21hdkg1c3lyNWVyVnJ1NDRFUUFoK1FRSkNnQUFBQ3dBQUFBQU5nQTJBQUFFekJESVNhdTlPT3ZOdS85Z0tJNWthWjVvcWdMQ01BaXJLUkEwQWNmalVCTURudTg5WDJoV3V3bEJyZGR4aVVvYVphNG5jaWNWRVduVmpxNFdMRzFwWGRDWGR4cUhQMWZiS1ozdE9GTnZwbnhPcjl2ditMd2VFMS8yTDJ4K1ZCbG1TNFVZaDBLSkZvRkhqWHhSY245N2xKV1dsNWlaY2dVR05BWUZKSk1pQldhZ1E0TWxuVHNFQmlLTElxczFya0Ftc1RSV3FDU3FPNjFXa1JrSUNUUUpDQmNIWmdkSENyRUt4cW9HeVVJSXRnVEZlc0syQ1h2VXQzcmNCSHZZc2RwNjA3Yldlc3VyelpYQncrZ2lFUUFoK1FRSkNnQUFBQ3dBQUFBQU5nQTJBQUFFekJESVNhdTlPT3ZOdS85Z0tJNWthWjVvcWdMQ01BaXJLUkEwQWNmalVCTURudTg5WDJoV3V3bEJyZGR4aVVvYVphNG5jaWNWRVduVmpxNFdMRzFwWGRDWGR4cUhQMWZiS1ozdE9GTnZwbnhPcjl2ditMd2VFMS8yTDJ4K1ZCbG1TNFVZaDBLSkZvRkhqWHhSY245N2xKV1dsNWdTQ0FrMENRaVdDanMwQ3BRSW9qV2ZKWk1kbktjRUNhcURJSzQxWGtBaHREUzJYQ0d0cDdBa2p4Nm1ycW5Ca1NLaG9xUVhCUVkwQmdWTG01M0dGUVZtMHBUUG9nYVZ0Tit1bGR3NzNwUUhaZ2VXQjl3RzZwa29FUUFoK1FRSkNnQUFBQ3dBQUFBQU5nQTJBQUFFekJESVNhdTlPT3ZOdS85Z0tJNWthWjVvcWdMQ01BaXJLUkEwQWNmalVCTURudTg5WDJoV3V3bEJyZGR4aVVvYVphNG5jaWNWRVduVmpxNFdMRzFwWGRDWGR4cUhQMWZiS1ozdE9GTnZwbnhPcjl2dktVU0Nsa0RnTFFvN05BcC9Fd2lDTlg1Q2NSWjdpQVFKaTFRWGp6VkNacFNWQkpkQUY0NklrVDVzRjRlUGlxSlJHWUdDaElXR2puMnVzck8wdFhZRkJqUUdCYlFGWnJ4UVNpSzVnZ1l5a3lHVkpwakpqOHVkSWNRN3hpV2pJUWRtQjJ1cEl3ZkVCdHEySG95ejFyUE01OURseUxUazR1OHBFUUFoK1FRSkNnQUFBQ3dBQUFBQU5nQTJBQUFFekJESVNhdTlPT3ZOdS85Z0tJNWthWjVvcWdMQ01BaXJLUkEwQWNmalVCTURudTg5WDJoV3V3a1JDVm9Db1dtOWhCTEZqcWFBZGhEVEdyUGtOSDZTV1VLQ3UvTjJ3cldTcmhiOG9HbHFZQWljSFpPSU5ETUhHOTdlWFhvZFVsTlZWbGRnUzRhS2k0eU5qbzhGQmpRR0JZOFhCV3MwQTVWUVhSbVNVd2FkWlJob1VKazhwV0duY2hlZ082SkNlRFlZQjZnREIxYWVHUWVnQnJtV3djTER4TVhHeDF5QUtic2lzNEVnemo5c0o3ZlNtdFN0UTZReTI4M0tLTXpJamVIRTBjYlY1OW5sM2NYazR1OG9FUUE3KTtcbn1cblxuIiwiLyogQmFjYXVzZSB3ZSB1c2UgY2hlY2tib3hlcyB3aXRob3V0IGxhYmVscywgYWxpZ24gdGhlbSB3aXRoIG90aGVyIHdpZGdldHMuICovXG5pbnB1dFt0eXBlPVwiY2hlY2tib3hcIl0ge1xuICAgIG1hcmdpbjogOXB4IDA7XG59XG5cbi5teC1jaGVja2JveCBpbnB1dFt0eXBlPVwiY2hlY2tib3hcIl0ge1xuICAgIG1hcmdpbi1sZWZ0OiAwO1xuICAgIG1hcmdpbi1yaWdodDogOHB4O1xuICAgIHBvc2l0aW9uOiBzdGF0aWM7XG59XG5cbi5mb3JtLXZlcnRpY2FsIC5mb3JtLWdyb3VwLm14LWNoZWNrYm94IGlucHV0W3R5cGU9XCJjaGVja2JveFwiXSB7XG4gICAgZGlzcGxheTogYmxvY2s7XG59XG5cbi5mb3JtLXZlcnRpY2FsIC5mb3JtLWdyb3VwLm14LWNoZWNrYm94LmxhYmVsLWFmdGVyIGlucHV0W3R5cGU9XCJjaGVja2JveFwiXSB7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xufVxuXG4uZm9ybS1ob3Jpem9udGFsIC5mb3JtLWdyb3VwLm5vLWNvbHVtbnMge1xuICAgIHBhZGRpbmctbGVmdDogMTVweDtcbiAgICBwYWRkaW5nLXJpZ2h0OiAxNXB4O1xufVxuXG4ubXgtcmFkaW9idXR0b25zLmlubGluZSAucmFkaW8ge1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICBtYXJnaW4tcmlnaHQ6IDIwcHg7XG59XG5cbi5teC1yYWRpb2J1dHRvbnMgLnJhZGlvIGlucHV0W3R5cGU9XCJyYWRpb1wiXSB7XG4gICAgLyogUmVzZXQgYm9vdHN0cmFwIHJ1bGVzICovXG4gICAgcG9zaXRpb246IHN0YXRpYztcbiAgICBtYXJnaW4tcmlnaHQ6IDhweDtcbiAgICBtYXJnaW4tbGVmdDogMDtcbn1cblxuLm14LXJhZGlvYnV0dG9ucyAucmFkaW8gbGFiZWwge1xuICAgIC8qIFJlc2V0IGJvb3RzdHJhcCBydWxlcyAqL1xuICAgIHBhZGRpbmctbGVmdDogMDtcbn1cblxuLmFsZXJ0IHtcbiAgICBtYXJnaW4tdG9wOiA4cHg7XG4gICAgbWFyZ2luLWJvdHRvbTogMTBweDtcbiAgICB3aGl0ZS1zcGFjZTogcHJlLWxpbmU7XG59XG5cbi5teC1jb21wb3VuZC1jb250cm9sIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xufVxuXG4ubXgtY29tcG91bmQtY29udHJvbCBidXR0b24ge1xuICAgIG1hcmdpbi1sZWZ0OiA1cHg7XG59XG5cbltkaXI9XCJydGxcIl0gLm14LWNvbXBvdW5kLWNvbnRyb2wgYnV0dG9uIHtcbiAgICBtYXJnaW4tcmlnaHQ6IDVweDtcbn1cbiIsIi5teC10b29sdGlwIHtcbiAgICBtYXJnaW46IDEwcHg7XG59XG4ubXgtdG9vbHRpcC1jb250ZW50IHtcbiAgICB3aWR0aDogNDAwcHg7XG4gICAgb3ZlcmZsb3cteTogYXV0bztcbn1cbi5teC10b29sdGlwLXByZXBhcmUge1xuICAgIGhlaWdodDogMjRweDtcbiAgICBwYWRkaW5nOiA4cHg7XG4gICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQgdXJsKGRhdGE6aW1hZ2UvZ2lmO2Jhc2U2NCxSMGxHT0RsaEdBQVlBTVFkQUtYWjhuZkY2NFRMN1F1WDNGZTQ1emFxNGhPYjNmTDYvZnI5L3JyaTlkWHQrWnJVOEN5bTRVbXk1Y0hsOXVQeisySzg2T2oxL056dytyRGQ5TTNxK0pEUTcyckE2aU9pMyszNC9FQ3U0OGpvOXgyZjNnV1YyLy8vL3dBQUFBQUFBQ0gvQzA1RlZGTkRRVkJGTWk0d0F3RUFBQUFoL3d0WVRWQWdSR0YwWVZoTlVEdy9lSEJoWTJ0bGRDQmlaV2RwYmowaTc3dS9JaUJwWkQwaVZ6Vk5NRTF3UTJWb2FVaDZjbVZUZWs1VVkzcHJZemxrSWo4K0lEeDRPbmh0Y0cxbGRHRWdlRzFzYm5NNmVEMGlZV1J2WW1VNmJuTTZiV1YwWVM4aUlIZzZlRzF3ZEdzOUlrRmtiMkpsSUZoTlVDQkRiM0psSURVdU5pMWpNVFF3SURjNUxqRTJNRFExTVN3Z01qQXhOeTh3TlM4d05pMHdNVG93T0RveU1TQWdJQ0FnSUNBZ0lqNGdQSEprWmpwU1JFWWdlRzFzYm5NNmNtUm1QU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh4T1RrNUx6QXlMekl5TFhKa1ppMXplVzUwWVhndGJuTWpJajRnUEhKa1pqcEVaWE5qY21sd2RHbHZiaUJ5WkdZNllXSnZkWFE5SWlJZ2VHMXNibk02ZUcxd1BTSm9kSFJ3T2k4dmJuTXVZV1J2WW1VdVkyOXRMM2hoY0M4eExqQXZJaUI0Yld4dWN6cDRiWEJOVFQwaWFIUjBjRG92TDI1ekxtRmtiMkpsTG1OdmJTOTRZWEF2TVM0d0wyMXRMeUlnZUcxc2JuTTZjM1JTWldZOUltaDBkSEE2THk5dWN5NWhaRzlpWlM1amIyMHZlR0Z3THpFdU1DOXpWSGx3WlM5U1pYTnZkWEpqWlZKbFppTWlJSGh0Y0RwRGNtVmhkRzl5Vkc5dmJEMGlRV1J2WW1VZ1VHaHZkRzl6YUc5d0lFTkRJREl3TVRnZ0tFMWhZMmx1ZEc5emFDa2lJSGh0Y0UxTk9rbHVjM1JoYm1ObFNVUTlJbmh0Y0M1cGFXUTZSVUpGTmtVNE5FWkNORVZETVRGRk9EazNNREJCTlVVMVJVTTRRamczUVRVaUlIaHRjRTFOT2tSdlkzVnRaVzUwU1VROUluaHRjQzVrYVdRNlJVSkZOa1U0TlRCQ05FVkRNVEZGT0RrM01EQkJOVVUxUlVNNFFqZzNRVFVpUGlBOGVHMXdUVTA2UkdWeWFYWmxaRVp5YjIwZ2MzUlNaV1k2YVc1emRHRnVZMlZKUkQwaWVHMXdMbWxwWkRwRlFrVTJSVGcwUkVJMFJVTXhNVVU0T1Rjd01FRTFSVFZGUXpoQ09EZEJOU0lnYzNSU1pXWTZaRzlqZFcxbGJuUkpSRDBpZUcxd0xtUnBaRHBGUWtVMlJUZzBSVUkwUlVNeE1VVTRPVGN3TUVFMVJUVkZRemhDT0RkQk5TSXZQaUE4TDNKa1pqcEVaWE5qY21sd2RHbHZiajRnUEM5eVpHWTZVa1JHUGlBOEwzZzZlRzF3YldWMFlUNGdQRDk0Y0dGamEyVjBJR1Z1WkQwaWNpSS9QZ0gvL3YzOCsvcjUrUGYyOWZUejh2SHc3Kzd0N092cTZlam41dVhrNCtMaDROL2UzZHpiMnRuWTE5YlYxTlBTMGREUHpzM015OHJKeU1mR3hjVER3c0hBdjc2OXZMdTZ1YmkzdHJXMHM3S3hzSyt1cmF5cnFxbW9wNmFscEtPaW9hQ2ZucDJjbTVxWm1KZVdsWlNUa3BHUWo0Nk5qSXVLaVlpSGhvV0VnNEtCZ0g5K2ZYeDdlbmw0ZDNaMWRITnljWEJ2Ym0xc2EycHBhR2RtWldSalltRmdYMTVkWEZ0YVdWaFhWbFZVVTFKUlVFOU9UVXhMU2tsSVIwWkZSRU5DUVVBL1BqMDhPem81T0RjMk5UUXpNakV3THk0dExDc3FLU2duSmlVa0l5SWhJQjhlSFJ3Ykdoa1lGeFlWRkJNU0VSQVBEZzBNQ3dvSkNBY0dCUVFEQWdFQUFDSDVCQVVFQUIwQUxBQUFBQUFZQUJnQUFBVWNZQ2VPWkdtZWFLcXViT3UrY0N6UGRHM2ZlSzd2Zk8vL3dPQXJCQUFoK1FRRkJBQWRBQ3dBQUFBQUFRQUJBQUFGQTJBWEFnQWgrUVFGQkFBZEFDd1VBQXdBQVFBQ0FBQUZBeURUaEFBaCtRUUZCQUFkQUN3VEFBc0FBZ0FHQUFBRkMyQVhkRnhuZE1UUU1WMElBQ0g1QkFVRUFCMEFMQkVBQ3dBRUFBZ0FBQVVSWUNjMllpbHlvcldkVm1jTnA4aTBYUWdBSWZrRUJRUUFIUUFzRHdBT0FBWUFCZ0FBQlE5Z0ozYUJNWjRqaDQ0V0I0bkZjSVlBSWZrRUNRUUFIUUFzRFFBUEFBZ0FCZ0FBQlJGZ0o0NGRSSGJCcVlvcEdRd2NPUmhxQ0FBaCtRUUpCQUFkQUN3QUFBQUFHQUFZQUFBRkxXQW5qbVJwbm1pcXJtenJ2bkFzejNSdDMzaXVrOEpnRHdRYlIyaWhCVGlOV1c4WTR6aDlHaGxnUnkyRkFBQWgrUVFKQkFBZEFDd0FBQUFBR0FBWUFBQUZNMkFuam1ScG5taXFybXpydm5Bc3ozUnQzMmh6YzN0U0M3emFZT2VvY1NBMFlNWlZJUWtHd1JhUVE2VjJpaklBYnFzS0FRQWgrUVFKQkFBZEFDd0FBQUFBR0FBWUFBQUZObUFuam1ScG5taXFybXpydm5Bc3ozUnQzMmh6Yy90VVY3eWFJV01MMGppRVZRVUZMS3dDSEVPcFlqQ3lNcHlzbGloYjRMNnJFQUFoK1FRSkJBQWRBQ3dBQUFBQUdBQVlBQUFGT21BbmptUnBubWlxcm16cnZuQXN6M1J0MzJoemN6dFFWN3phcG1BTG1vQXNqZzdGTUI0NWpGV0RzeWxWTnM1VmdjUHRFbU8rQ202c0NnRUFJZmtFQ1FRQUhRQXNBQUFBQUJnQUdBQUFCVDlnSjQ1a2FaNW9xcTVzNjc1d0xNOTBiZDhvY1hPQ3plMm14c2ExWVp4K0xRN2cxRUNxT0prVWc3TkljWXlxNXJDMGdicW1uSENZc1lRdGU3aDBLZ1FBSWZrRUNRUUFIUUFzQUFBQUFCZ0FHQUFBQlVSZ0o0NWthWjVvcXE1czY3NXdMTTkwYmQ4b1lRWXdKNVNjbmluNElwSVlGOWNsV1ZvWVY1ekZLZk5FY1RLcFN4WElURkc3SXkyMnhlQ1l6eGNwVFBxajRONm9FQUFoK1FRSkJBQWRBQ3dBQUFBQUdBQVlBQUFGU21BbmptUnBubWlxcm16cnZuQXN6M1ROYm5iQXdZUzV2NXdBcWZKekZVZEhWckt6WWJnWU9OK2t4YW1jQ2dQV29KRGFaRk9EYUtyQWNaWVlIRzVydzJtN04xWllSUmkzMlZjaEFDSDVCQWtFQUIwQUxBQUFBQUFZQUJnQUFBVlBZQ2VPWkdtZWFLcXViT3UrY0N6UDVVYlFJb2QzZ3I3N3JodkpBbXh4TEtVaVM5bmhURjVNQThQRk1KaDZMbzdneEJpd0JsUFV4cHNhYkZZTVRwaVVYcXNFQm81OGJ0akN0aGI3YnI4S0FRQWgrUVFKQkFBZEFDd0FBQUFBR0FBWUFBQUZVMkFuam1ScG5taXFybXpydmpETFhERXBjRFZwWlBtSTk1MGJVUFJ6UVVxUVlvdHpKQ2xaejhsenhabVVEQVZYd1hDYW9yeWRDM2Rsb0tFTTQzTWFkZUZrU3dXT2VSVXdjTzU0UXlBbU9BcUdnQzBoQUNINUJBVUVBQjBBTEFBQUFBQVlBQmdBQUFWWFlDZU9aR21lYUtxdWJMdHVsbnNhaG14dXRVMEduRjRPRFIrcEp4VHhpaUpDemhYNzJRYUVIZEUxSFZWWkhNQXY0OG9NVE1jV0ozRENzUXliMUdBNSs2bzJIRzRwdzBtekFnTU9aNURmazIwQlVYOUloQzBoQUNINUJBa0VBQjBBTEFJQUF3QVVBQk1BQUFVL1lDZUsxdENNYUpweWhPcU93L2JPOUd6VmM0dnY5YzJuc2w5QVpQaDFpajZqY3JRUW5YYlBEc1E0SFFWcFYxUld0VTFGUjE5WDlWZ1VqV20rWkNvRUFDSDVCQWtFQUIwQUxBQUFBQUFZQUJnQUFBVmJZQ2VPWkdtZWFLcU9GckdpeE1CeHpHc2FuR3VidzdhZkJ0K3ZST0FNVGJsanlhaGtNWnVkaG5BWEtFbUhtOFp5K0JRdHVpL09ZcWw3RlUvZ1ZQSTJUVzBNcVo1cU0xamh5cU1pM0R6amJEWjllRFlRRFZwalVJZy9JUUFoK1FRSkJBQWRBQ3dBQUFBQUdBQVlBQUFGWUdBbmptUnBubWlxaWxXWFpjUnFFaHczWE5jZ2t3WUg3U2ZPQlhneURJa2xHdExrVzVZNFRoSkJGeFZsamtCQjZZcThaRXBVWUpnRkpYSmFwT1lPVXBhMlY1eVl5U2k3R0ZKQzFlVmRWSlBZZHpJME5qZ0ROWEpFQkYrSVZZMUFJUUFoK1FRSkJBQWRBQ3dBQUFBQUdBQVlBQUFGWldBbmptUnBubWlxaWtKWEZNUnFOaHhuTUlWUngvTEFXYWFBck1OaERGRUQ0M0hHV1o1K3pwS2dHUzBacXFTQ2Npa2NhWjA0RXVHNk5QQkcxR01hRFJ4YTFpS2F1bkZLeWhpRFZGSEZnSnQ4YlNSdmVUSTBOZ3dNT2h4MFRnUXZIUzFZa2xFaEFDSDVCQWtFQUIwQUxBQUFBQUFZQUJnQUFBVm1ZQ2VPWkdtZWFLcUtRY01VeldwbUhMZDF4VlpuY2pjTUFWUGdwMXB3Q2lyR0RUVkE5azZad1JQRm1aNENWV3Vwc2RTT1h0cmdWMXRna0xqV1RZeVVmYlpISExFTU81UDJCanhUVTFhd240NHFCVzhtQzBSQ2hpczBOZ1U1TzFZdFptdGVrNU1oQUNINUJBa0VBQjBBTEFBQUFBQVlBQmdBQUFWbllDZU9aR21lYUtxS1FYWmQyV29XSEhkMURWTVhjc1VOSjRHQnMrTHdVclFLeWlpam5RcEFXY2R3NGdTa3FBQVJlM0p4VDdkdngwS0NmYjBqTk5aTTJtTGRJeXRXTzR2S0JzY1NjK1ZjNXA5d1ZYWWtBUU9CS0RRMkdTNDdYeTB2SFZkaWs1UWlJUUFoK1FRRkJBQWRBQ3dBQUFBQUdBQVlBQUFGYm1BbmptUnBubWlxaWxheGJjVnFNaHpIZEExdHl3Sm5uQUlEUjZEaVpGUVpUc29vUzU0WVAxbkhjQ3NOcFNJbHlhTEZjZ0trUWhWcjJwQkZpOUttY1c2WVIrSXpJMGJxU3UxWm9qZFJnbUtwSjB3clRpaUNLSVFvUFZFbFFYZ29PZ3dOT1RWalVpMW1kR2VhbXlVaEFDSDVCQVVFQUIwQUxBSUFBZ0FVQUJRQUFBVmJZQ2VPa01HZG5BR05MSWx5dy9DdWJjZWNXWjJkVEhzYk5aYXBKNEtrZ2kwVDdZU3NNWTI1Sm10WDRraWRKdXVWaFJwc1dUTFlkeFRXamsrbXNTZ0ZIVk03ekcvY0NMd3FSei9wMElmVDhZSkdYV1VjTkVoVktDbzFJUUFoK1FRRkJBQWRBQ3dCQUFFQUZnQVdBQUFGWjJBbmptUFZCV1NxbmdaSGNnYTZqc2JyMG5OMTEyVEZjNmFVNnpZYnBtckVXY2ZGTzRrRXloSFUyYWsxbzlYc0VydHlCYm1xWUpKN1E0MnhMaG00MlBsaVRUc3QxeXBTYzZkcUpGa3VHazVWQWtZcE9pSlhiVDlLVnh4Smhpb0JMUytOVVNaMktpRUFJZmtFQ1FRQUhRQXNBUUFCQUJZQUZnQUFCV3BnSjQ2aWxWMVgxazFrUzE2Y3kxMHUyY1MxeURVMU0zSUVFZ0hYOGRsR3dWcXl3L3ZsY2tSYVovbE1TbVBFcDY0VHM0aW8ycVJKcXoyUm42aHpMcVd1cWI1dEtyWTk3MGpCU3BHVTI5Nk9tbE01UzRBaVJseFVReU9HTmxreWhDNHdNbnRrSmlncUxDNGhBQ0g1QkFrRUFCMEFMQUFBQUFBWUFCZ0FBQVYrWUNlT1pHbWVwVlZjVjlaTjZMbHhkRTF2OGRqWWZOM0VEQnVFQkxFeFRqdmE4RlNrL1VxMW5DaEttbkdXdVNadVJKVjJ1aGFsbDh1eGlESzBNZG5WdWFUVlg4NUY1T2JBNC9NTzJnNm5zZU5ZVWsxbVUyOWVYUjFXZ1NoYUpBdUlLSkFkU1ZlTVBpZEJrRTAwUnlpVVBaZFNWajFiYWhZWkxCbUVkM0FoQUNINUJBa0VBQjBBTEFBQUFBQVlBQmdBQUFXQllDZU9aR21lcFZWY1Y5Rk42TGx4ZEUxdjhkallmTjNFakpyQlpLZ3hUanRhVE9BejFYS2lKMm5HRVVDakhOeUlOcngyaXB5UlJlbnRNRGtXVVlGY3ByazZGN2FYZGhIRncrVU9YUzIvdXJkVlpXY2tYR1ZnVTMweE55UUxVamsxQ3lWSmdTZG5IRDhtUVlVa0FtQWNSeWlUUFUxUVZEMWFaU29zQldsNXJoMGhBQ0g1QkFrRUFCMEFMQUFBQUFBWUFCZ0FBQVdDWUNlT1pHbWVwVlZjVjlGTjZMbHhkRTF2OGRqWWZOM0VqTnJGZEtreFRqdk9JRGVnL1VxMFphN1Q1SlJtMXFub1JxSU50WjFpdG1PaGdVYzBpNmhnUG5kb3JuRDc3QldKM1cvT2x6MEd3OUY5VXdCcEloTjFZSGNqV0hRY09GMUtXbFVtU1FNQU1WVlBKVUdISXdCaUhFY29TVDAybVRGWVBZNW5LaXd1TUhodUlRQWgrUVFKQkFBZEFDd0FBQUFBR0FBWUFBQUZlbUFuam1ScG5xV1ZNVXlHdmhjbnovTDFqZzJ0ejgxYnpLNVNabFk0NVRpR20wSFdLOG1TdDg2U1U0cFJvNklhU1JiRURxOGRpd3k3NVZoRVgvS0lLMktNMVIwWm8vMVd5OUYxTWpzTDF2ZjNYaklUSTFaMkhEWmxVRXA1SWtlS0oxTk5KVCtBSTE4Y1JTaEhPelNTTUp5SGNHRXJMUjJEb25BaEFDSDVCQWtFQUIwQUxBQUFBQUFZQUJnQUFBVjlZQ2VPWkdtZVpkQXdUSU8rRnlmUDh2V09CRDFjMTBBVHI4SU1Zb0xNQ3FjY3h3YVRBVXUxbXlqR0tWR2xvMmlXUThSMmpGVlJRT2JkQmtRTnpxQXM4bzBZUzNZbnhoREJtV1Y2ZHMzMnVUcGpZV1ZrVzExWVlDUlhYbHBiZUUyQ09Jd25WRThsUWpLR0kyQWNTQzg2UEQ0elhsUTBrbGhuTEg5eWNpRUFJZmtFQ1FRQUhRQXNBQUFBQUJnQUdBQUFCWDFnSjQ1a2FaNWwwQlJGZzc0TUo4OHk4NDRFZlhYWlJST3ZqR3h3RWd4a21WT09rd3pLZ0NYa1RTVGtsR0xFcWVob0c4bTBwSzhvSUFaM1pBRlJnN016ZDN5akF0UE40eFJFY25yOUxtTFQ0V05sWUdoZUhBSnVnbGhtWEZGelUxVW1TMDBvVlZBbFZWa2xSbEl2T2hrOU5HQXhORE5kWmlvZExYcDZJUUFoK1FRSkJBQWRBQ3dBQUFBQUdBQVlBQUFGZ0dBbmptUnBucVhRRkZrbm9HakJ6ZlJjd0NORUR4M1JaUU1hQk5hWWJWQ2JXZU9rNCtCNnM5UE05K3hFU2JKanRaTzhqYTViQUZqQTRXMUZ3WmVJMHpyL25LSU1oK3BteCtGdWdoM2FQc3ZwWlc0ZFFTUmdXNFpaWjEwbFUxVjZlRG1OTUk5REprVWNXaVpKa0ZJekF4aytRRUpWTWpVMFhtY3ZHYUNDclIwaEFDSDVCQWtFQUIwQUxBQUFBQUFZQUJnQUFBVjZZQ2VPWkdtZXBkQmxHWUcrR1NmUGN2YU8xcnk1UWJmTmxoZEJWa0FWWks2VDdOWUpMRTJ5SHJQekhNV0swODdSTnFwbXF3TE9KanY2cVVTY0pIbG81WkJKSEc1TVNuWnkyZThPSGoxK203dHViMTVYWkZzbFVWK0JKRG1LS0U0Y1FTWkRIRmdtUjJrM09qd0VQMTR3TkRSY1pDb3NIV2Q1YnlFQUlma0VDUVFBSFFBc0FBQUFBQmdBR0FBQUJYcGdKNDVrYVo1bDFXVk5wNkpueHMzMG5NRmpRQmR1RnhTMEFJd3dHeFpSbkFGT05PQUlTOGRsSnlxU0VhUWk0bTFFbFVZckhCNVdCQ1J4eG1hSXFNRjVqY0d0RGh2TmpVK2ZZOTBJTEI2WHVXZG9WRlpqV2xDQlhvaG1Ta3ROZUNSRUhGY25rWk1uT2pNOEtqOUJVakkxTkZ0b0VBMHRiblJqSVFBaCtRUUpCQUFkQUN3QUFBQUFHQUFZQUFBRmdHQW5qbVJwbmlaRWRCYnFObHdzeDQwN0NyR3hkbE5IR0RHQkM4SVp1QUlEam90anNJbUF3bExST1VxV1lBR3FLTUNwalpqYUVaREUyWVU3U3BFbGZhNXdXajcydVN3aXlNTjBFYWR5N3JoSEMzZGFIQXRmVFdkakkxaGhYRjVmUmxwV0ptQk9pU2xGV1NkSUhCQXVPRXc3UFQ4eFdqQXpNbzVoRml0d2ZYMGhBQ0g1QkFrRUFCMEFMQUFBQUFBWUFCZ0FBQVYxWUNlT1pHbWVwa1YwQWVvU1hDekhxeXRXOFVWTzNSWGJIWTdCWnVCWVRqZ2QwSGNTQWtmRkV1dzVXbkJxSW82UzJ1T1FPQzF1ZGhUd2lqc1RzR2g2RG1MTlozaTVIUXpYei9PUjlzd2NzYmxYSlU1VVVTVkpUejRWS0VJTEtBdEZSeWc0ZXlNOFBuQTJNRE15V0Z3QkJDc0FkR0loQUNINUJBa0VBQjBBTEFBQUFBQVlBQmdBQUFWellDZU9aR21lWmdCMUFlb1NBeWZQQStHU2NWWldHVGZjQWM3bGR1RzBUaHpkclZQZ25BYkRwZWp5SXhHYzBoSEhOaG9vczUxTVZZUUZrMGRCcy9ZSUtaczVxN082QXhlbDUyNU9SVjF4ZTlWaVZtNVNXeVZRWUZSSUJWSk5LRUZSS0VWSEtEazdQV00zTURNMFhHWXFjWE5xSVFBaCtRUUpCQUFkQUN3QUFBQUFHQUFZQUFBRmQyQW5qbVJwbm1iUVdkMkVvdERBY1lZeEQ5QkxEZ05oRWp4ZGdKUFJaVGlxRThlbkUzRk9nMkpUbEJtVVl0TmRidFRMam9Da3AzY2s3Z2pLWTQ1Z1pCaXpSNWEydTJOZ09lZWQ4Z1R0NWJoRVhXTmdPMjQ0SlZGZVZTWUxTMU1FZkdGU0tFZE5QRXdrUUZaVE1UTTFOMXRqYXl4L2VGa2hBQ0g1QkFrRUFCMEFMQUFBQUFBWUFCZ0FBQVZvWUNlT1pHbWVwdEFGYU50WkJtY3dUR3hZN21nWXA3QzdBZzdFQmVHMGpMa1ZzbVFZSmpzUUhnbjIxT0YwVlpKVXRNd3VmVm1kU3NRSWswZUJzcG5CRW0yejcyNjFheGhYd1NNcTNOU3NSazl5UnloQlRpaEZkaWMvS1lvNU1ESTBObVlkS20yU1dTRUFJZmtFQ1FRQUhRQXNBQUFBQUJnQUdBQUFCV3hnSjQ1a2FaNW0xUVZvdXhvYzB6UU1aN0N1YURBb1k3Z1ZUazRnUkJWekhjN0VaQkFnUllJZktjQjdpcW9qcVZWSE9tNlBGZXlXb1JJMXRxT3pDSWZ1cUsvdERubmt0WG9OaTdaMjFXYXdkVTVQVVNkMUxZVWlRWUVvUkRrN1BYc3RBVEF5TkRaL1ZwZHhUeUVBSWZrRUNRUUFIUUFzQUFBQUFCZ0FHQUFBQldOZ0o0NWthWjVtMVFsbzJ3V2IwWFJRWTJ5Qk8yN3oyV3c2ZzY0alJCa2NRK0xFQkV5S21xTkF6emw5T2tsUTRuVlVGRldwcXRWMkJCa0p5bU8wZDl5cGRxL3ZyRE1yM1g2MThOUGJaVmlhRm50NkN5NDhLRDlKTURJME5qaGpLaXhzV3lFQUlma0VDUVFBSFFBc0FBQUFBQmdBR0FBQUJWaGdKNDVrYVo3bTBnbG91MjdGMmxuRjVwSTJhdVV0M3dNb24wc29JZzVMQXN1dHBNUXRUYjdZa3lRVk5hZldFUXRMMnNxNDN5ejQycWxpemNhYmtMeGtkOUxCRTd5VUJzeUxhcmYxUG9JcFdUVmdJaXdxZ2xnaEFDSDVCQWtFQUIwQUxBQUFBQUFZQUJnQUFBVlpZQ2VPWkdtZXA5QUJhTnN4aE5xcGpPeSt0c25jeGQzMUtLQlBTTnI1UnNaUjdyaE1Ia1ZPd3BQVUlDMmZyT21wSXVKcVI5N1pWenlTZnF2SXNaTThiV3JYSXFKTFRxS2I3TVdyU0FCSHdUb0xZbjArWGdwalV5RUFJZmtFQ1FRQUhRQXNBQUFBQUJnQUdBQUFCVkZnSjQ1a2FaNW5oYTVqWm9sSloyVXNTYVBBdlJKMXg2Ty9YdERXSTVZQVJaS3FsVFNLWHMxb2JTSmFTcSttbUlpSzVjcXVVSkd1T2NhYXlqVzBMemtzdFUvdmtwclpxOUNRSFdURzJ1U2JleUVBSWZrRUNRUUFIUUFzQUFBQUFCZ0FHQUFBQlVsZ0o0NWthWjVuaGE0anBJcE9CN0Vrd2Rwc1FIYzYydSsvMms0NExNcU1MZVF1cHV4TVJJdW05QlNGVGErZGwyaW01R0pMdUdLWUZNeXR5dEt4U2IzeWlpcnU0clA2WllVQUFDSDVCQWtFQUIwQUxBQUFBQUFZQUJnQUFBVTVZQ2VPWkdtZUo0Q3VZMUNxS2l1Nk1ydlVkNjJiOU43dnRaOFBTQ3dtUkxHaU1yVkVKWnZMMzdNcGxGV2hwWnpOaW0zeGxxcGpseFVDQUNINUJBa0VBQjBBTEFBQUFBQVlBQmdBQUFVM1lDZU9aR21lNklTdTRtSzY3RmpGTkoyc2Q2M0g4MTdEUHFCdlNDeUtWRVdrY1lrUzZweE1VUys2azFCWDAxT1dCWVhxbE5kVENBQWgrUVFKQkFBZEFDd0FBQUFBR0FBWUFBQUZMR0Fuam1ScG5taXFvdFBxdm5Bc3oySkxxL2F0Ny96cDlNRGdLQmNqQ284OHhVdXBNNmFjVHRnUGFRb0JBQ0g1QkFVRUFCMEFMQUFBQUFBWUFCZ0FBQVVqWUNlT1pHbWVhS3F1Yk91K2NMeFNjbTNmZUk3VGV0L3p2cUJ3eUFLV2pDOGtNUVFBT3c9PSkgbm8tcmVwZWF0IHNjcm9sbCBjZW50ZXIgY2VudGVyO1xufVxuLm14LXRvb2x0aXAtY29udGVudCAudGFibGUgdGgsXG4ubXgtdG9vbHRpcC1jb250ZW50IC50YWJsZSB0ZCB7XG4gICAgcGFkZGluZzogMnB4IDhweDtcbn1cbiIsIi5teC10YWJjb250YWluZXItcGFuZSB7XG4gICAgaGVpZ2h0OiAxMDAlO1xufVxuLm14LXRhYmNvbnRhaW5lci1jb250ZW50LmxvYWRpbmcge1xuICAgIG1pbi1oZWlnaHQ6IDQ4cHg7XG4gICAgYmFja2dyb3VuZDogdXJsKGRhdGE6aW1hZ2UvZ2lmO2Jhc2U2NCxSMGxHT0RsaE5nQTJBUE1BQVAvLy93QUFBSGg0ZUJ3Y0hBNE9EdGpZMkZSVVZOemMzTVRFeEVoSVNJcUtpZ0FBQUFBQUFBQUFBQUFBQUFBQUFDSDVCQWtLQUFBQUlmNGFRM0psWVhSbFpDQjNhWFJvSUdGcVlYaHNiMkZrTG1sdVptOEFJZjhMVGtWVVUwTkJVRVV5TGpBREFRQUFBQ3dBQUFBQU5nQTJBQUFFeXhESVNhdTlPT3ZOdS85Z0tJNWt5U0VKUVNTSTZVcUtLaFBLV3lMejNOcGltcXNKbnVnM0U0YUlNaVBJOXdzcVBUamlUbGt3cUF3RlRDeFhleFlHczBIMmdnSk9MWUxCUURDeTVnd213WXg5SkpyQXNzSFFYc0tyOUNGdU0zQWxjakowSUFkK0JBTUhMbWxySkFkdUJvNVBsNWlabXB1Y25aNmZjV3FJbUpDamFIT1poaXFtRkl1QWw2NFpzWml6RjZvRXJFSzN1Uk9sbTc2Z3djTER4TVhHeDhYQWo2SWt1NCtvSXJVazBoL1UwV0Vqem5IUUlzcWhrY2pCM3NuY3hkYkM1K0xseWN6aDdrOFJBQ0g1QkFrS0FBQUFMQUFBQUFBMkFEWUFBQVRNRU1oSnE3MDQ2ODI3LzJBb2ptUnBubVZoRUlSUm9HY3hzT3p3d3VSS3N3Wk83anZmQ0VnVGluUzduaEYwbU5FR2h3c2l3VW9nbHBTRHpoQzFLSWlLa1dBd0VKZ1FSTllWSk5pWlNkUjBJdVNzbGRKRlVKMHd1T01KSVcwMGJ5TnhSSE9CWklRamFHbHJXQnhmUUdHUUhsTlZqNVdhbTV5ZG5wOUxZMldib29zV2dpeW1RcWdFcWhON2ZaQ3dHYk95TzdFWHJLNDR1aHFscElxZ3dzUEV4Y2JIeU1lL0tNc2l2U2JQZExjbnRkSlAxTlBPYmlmUmlhUE13Y25DemNyYnlOWEc2TVhkeHVUaTd6NFJBQ0g1QkFrS0FBQUFMQUFBQUFBMkFEWUFBQVRPRU1oSnE3MDQ2ODI3LzJBb2ptUnBubWlxQXNJd0NLc3BFRFFCeCtOUUV3T2U3ejFmYUZhN0NVR3QxMUZZTU5BTUJWTFNTQ3JvYW9Qb2NFY1ZPWGNFZytoS0M1TEF0VEhRaEthSmlMUnU2THNUdjEzeTBJSE1PeXc5QjE4R2ZuK0Zob2VJaVlvWkNBazBDUWlMRmdwb0NobFRSd2h0QkpFV2NEWkNqbTBKRjN4bU1adHVGcVpDcVFRWG4za29vbWlrc0hpWm01MlNBSlJnbHJ3VGpZKzd3Y2JIeU1uS0U1Z296VzljSjdFL1dDZXNhdFVtMTF0RjB0RWp6eks0eTRuaHh0UEkyOGJxd2VqSTV1VHhKaEVBSWZrRUNRb0FBQUFzQUFBQUFEWUFOZ0FBQk1zUXlFbXJ2VGpyemJ2L1lDaU9aR21lYUtvQ3dqQUlxeWtRTkFISDQxQVRBNTd2UFY5b1Zyc0pRYTNYY1lsS0dtV3VKM0luRlJGcDFZNnVGaXh0YVYzUWwzY2FoejlYMnltZDdUaFRiNlo4VHEvYjcvaTh2R0NnR1FvYWNVSUZab0FYYkVkOU93UUdHR1pIaXpXT1FKQ1JCQmlJUW9vN2paaFJTd2RtQjNvVUI0b0dvNlNxcTZ5dE1RZ0pOQWtJckFxUkNpT0NJd2lXQkxSVFJTV3hsZ2toanlTOU5NYVV5TWxEVk1LOXhVT2ZKYnlXdjNxMmk3aEx1aFd3c3RsQ21hdkg1c3lyNWVyVnJ1NDRFUUFoK1FRSkNnQUFBQ3dBQUFBQU5nQTJBQUFFekJESVNhdTlPT3ZOdS85Z0tJNWthWjVvcWdMQ01BaXJLUkEwQWNmalVCTURudTg5WDJoV3V3bEJyZGR4aVVvYVphNG5jaWNWRVduVmpxNFdMRzFwWGRDWGR4cUhQMWZiS1ozdE9GTnZwbnhPcjl2ditMd2VFMS8yTDJ4K1ZCbG1TNFVZaDBLSkZvRkhqWHhSY245N2xKV1dsNWlaY2dVR05BWUZKSk1pQldhZ1E0TWxuVHNFQmlLTElxczFya0Ftc1RSV3FDU3FPNjFXa1JrSUNUUUpDQmNIWmdkSENyRUt4cW9HeVVJSXRnVEZlc0syQ1h2VXQzcmNCSHZZc2RwNjA3Yldlc3VyelpYQncrZ2lFUUFoK1FRSkNnQUFBQ3dBQUFBQU5nQTJBQUFFekJESVNhdTlPT3ZOdS85Z0tJNWthWjVvcWdMQ01BaXJLUkEwQWNmalVCTURudTg5WDJoV3V3bEJyZGR4aVVvYVphNG5jaWNWRVduVmpxNFdMRzFwWGRDWGR4cUhQMWZiS1ozdE9GTnZwbnhPcjl2ditMd2VFMS8yTDJ4K1ZCbG1TNFVZaDBLSkZvRkhqWHhSY245N2xKV1dsNWdTQ0FrMENRaVdDanMwQ3BRSW9qV2ZKWk1kbktjRUNhcURJSzQxWGtBaHREUzJYQ0d0cDdBa2p4Nm1ycW5Ca1NLaG9xUVhCUVkwQmdWTG01M0dGUVZtMHBUUG9nYVZ0Tit1bGR3NzNwUUhaZ2VXQjl3RzZwa29FUUFoK1FRSkNnQUFBQ3dBQUFBQU5nQTJBQUFFekJESVNhdTlPT3ZOdS85Z0tJNWthWjVvcWdMQ01BaXJLUkEwQWNmalVCTURudTg5WDJoV3V3bEJyZGR4aVVvYVphNG5jaWNWRVduVmpxNFdMRzFwWGRDWGR4cUhQMWZiS1ozdE9GTnZwbnhPcjl2dktVU0Nsa0RnTFFvN05BcC9Fd2lDTlg1Q2NSWjdpQVFKaTFRWGp6VkNacFNWQkpkQUY0NklrVDVzRjRlUGlxSlJHWUdDaElXR2puMnVzck8wdFhZRkJqUUdCYlFGWnJ4UVNpSzVnZ1l5a3lHVkpwakpqOHVkSWNRN3hpV2pJUWRtQjJ1cEl3ZkVCdHEySG95ejFyUE01OURseUxUazR1OHBFUUFoK1FRSkNnQUFBQ3dBQUFBQU5nQTJBQUFFekJESVNhdTlPT3ZOdS85Z0tJNWthWjVvcWdMQ01BaXJLUkEwQWNmalVCTURudTg5WDJoV3V3a1JDVm9Db1dtOWhCTEZqcWFBZGhEVEdyUGtOSDZTV1VLQ3UvTjJ3cldTcmhiOG9HbHFZQWljSFpPSU5ETUhHOTdlWFhvZFVsTlZWbGRnUzRhS2k0eU5qbzhGQmpRR0JZOFhCV3MwQTVWUVhSbVNVd2FkWlJob1VKazhwV0duY2hlZ082SkNlRFlZQjZnREIxYWVHUWVnQnJtV3djTER4TVhHeDF5QUtic2lzNEVnemo5c0o3ZlNtdFN0UTZReTI4M0tLTXpJamVIRTBjYlY1OW5sM2NYazR1OG9FUUE3KSBuby1yZXBlYXQgY2VudGVyIGNlbnRlcjtcbiAgICBiYWNrZ3JvdW5kLXNpemU6IDMycHggMzJweDtcbn1cbi5teC10YWJjb250YWluZXItdGFicyB7XG4gICAgbWFyZ2luLWJvdHRvbTogOHB4O1xufVxuLm14LXRhYmNvbnRhaW5lci10YWJzIGxpIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG59XG4ubXgtdGFiY29udGFpbmVyLWluZGljYXRvciB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIGJhY2tncm91bmQ6ICNmMmRlZGU7XG4gICAgYm9yZGVyLXJhZGl1czogOHB4O1xuICAgIGNvbG9yOiAjYjk0YTQ4O1xuICAgIHRvcDogMHB4O1xuICAgIHJpZ2h0OiAtNXB4O1xuICAgIHdpZHRoOiAxNnB4O1xuICAgIGhlaWdodDogMTZweDtcbiAgICBsaW5lLWhlaWdodDogMTZweDtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgICBmb250LXNpemU6IDEwcHg7XG4gICAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgICB6LWluZGV4OiAxOyAvKiBpbmRpY2F0b3Igc2hvdWxkIG5vdCBoaWRlIGJlaGluZCBvdGhlciB0YWIgKi9cbn1cbiIsIi8qIGJhc2Ugc3RydWN0dXJlICovXG4ubXgtZ3JpZCB7XG4gICAgcGFkZGluZzogOHB4O1xuICAgIG92ZXJmbG93OiBoaWRkZW47IC8qIHRvIHByZXZlbnQgYW55IG1hcmdpbiBmcm9tIGVzY2FwaW5nIGdyaWQgYW5kIGZvb2JhcmluZyBvdXIgc2l6ZSBjYWxjdWxhdGlvbnMgKi9cbn1cbi5teC1ncmlkLWNvbnRyb2xiYXIsIC5teC1ncmlkLXNlYXJjaGJhciB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gICAgZmxleC13cmFwOiB3cmFwO1xufVxuLm14LWdyaWQtY29udHJvbGJhciAubXgtYnV0dG9uLFxuLm14LWdyaWQtc2VhcmNoLWNvbnRyb2xzIC5teC1idXR0b24ge1xuICAgIG1hcmdpbi1ib3R0b206IDhweDtcbn1cblxuLm14LWdyaWQtc2VhcmNoLWNvbnRyb2xzIC5teC1idXR0b24gKyAubXgtYnV0dG9uLFxuLm14LWdyaWQtY29udHJvbGJhciAubXgtYnV0dG9uICsgLm14LWJ1dHRvbiB7XG4gICAgbWFyZ2luLWxlZnQ6IDAuM2VtO1xufVxuXG5bZGlyPVwicnRsXCJdIC5teC1ncmlkLXNlYXJjaC1jb250cm9scyAubXgtYnV0dG9uICsgLm14LWJ1dHRvbixcbltkaXI9XCJydGxcIl0gLm14LWdyaWQtY29udHJvbGJhciAubXgtYnV0dG9uICsgLm14LWJ1dHRvbiB7XG4gICAgbWFyZ2luLWxlZnQ6IDA7XG4gICAgbWFyZ2luLXJpZ2h0OiAwLjNlbTtcbn1cblxuLm14LWdyaWQtcGFnaW5nYmFyLFxuLm14LWdyaWQtc2VhcmNoLWNvbnRyb2xzIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgYWxpZ24taXRlbXM6IGJhc2VsaW5lO1xuICAgIG1hcmdpbi1sZWZ0OiBhdXRvO1xufVxuXG4ubXgtZ3JpZC10b29sYmFyLCAubXgtZ3JpZC1zZWFyY2gtaW5wdXRzIHtcbiAgICBtYXJnaW4tcmlnaHQ6IDVweDtcbiAgICBmbGV4OiAxO1xufVxuXG5bZGlyPVwicnRsXCJdIC5teC1ncmlkLXRvb2xiYXIsXG5bZGlyPVwicnRsXCJdIC5teC1ncmlkLXNlYXJjaC1pbnB1dHMge1xuICAgIG1hcmdpbi1sZWZ0OiA1cHg7XG4gICAgbWFyZ2luLXJpZ2h0OiAwcHg7XG59XG5bZGlyPVwicnRsXCJdIC5teC1ncmlkLXBhZ2luZ2JhcixcbltkaXI9XCJydGxcIl0gLm14LWdyaWQtc2VhcmNoLWNvbnRyb2xzIHtcbiAgICBtYXJnaW4tbGVmdDogMHB4O1xuICAgIG1hcmdpbi1yaWdodDogYXV0bztcbn1cblxuLm14LWdyaWQtcGFnaW5nLXN0YXR1cyB7XG4gICAgcGFkZGluZzogMCA4cHggNXB4O1xufVxuXG4vKiBzZWFyY2ggZmllbGRzICovXG4ubXgtZ3JpZC1zZWFyY2gtaXRlbSB7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgIHZlcnRpY2FsLWFsaWduOiB0b3A7XG4gICAgbWFyZ2luLWJvdHRvbTogOHB4O1xufVxuLm14LWdyaWQtc2VhcmNoLWxhYmVsIHtcbiAgICB3aWR0aDogMTEwcHg7XG4gICAgcGFkZGluZzogMCA1cHg7XG4gICAgdGV4dC1hbGlnbjogcmlnaHQ7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgIHZlcnRpY2FsLWFsaWduOiB0b3A7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cbltkaXI9XCJydGxcIl0gLm14LWdyaWQtc2VhcmNoLWxhYmVsIHtcbiAgICB0ZXh0LWFsaWduOiBsZWZ0O1xufVxuLm14LWdyaWQtc2VhcmNoLWlucHV0IHtcbiAgICB3aWR0aDogMTUwcHg7XG4gICAgcGFkZGluZzogMCA1cHg7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgIHZlcnRpY2FsLWFsaWduOiB0b3A7XG59XG4ubXgtZ3JpZC1zZWFyY2gtbWVzc2FnZSB7XG4gICAgZmxleC1iYXNpczogMTAwJTtcbn1cblxuLyogd2lkZ2V0IGNvbWJpbmF0aW9ucyAqL1xuLm14LWRhdGF2aWV3IC5teC1ncmlkIHtcbiAgICBib3JkZXI6IDFweCBzb2xpZCAjZGRkO1xuICAgIGJvcmRlci1yYWRpdXM6IDNweDtcbn1cbiIsIi5teC1jYWxlbmRhciB7XG4gICAgei1pbmRleDogMTAwMDtcbn1cblxuLm14LWNhbGVuZGFyLW1vbnRoLWRyb3Bkb3duLW9wdGlvbnMge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbn1cblxuLm14LWNhbGVuZGFyLCAubXgtY2FsZW5kYXItbW9udGgtZHJvcGRvd24ge1xuICAgIHVzZXItc2VsZWN0OiBub25lO1xufVxuXG4ubXgtY2FsZW5kYXItbW9udGgtY3VycmVudCB7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xufVxuXG4ubXgtY2FsZW5kYXItbW9udGgtc3BhY2VyIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgaGVpZ2h0OiAwcHg7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICB2aXNpYmlsaXR5OiBoaWRkZW47XG59XG5cbi5teC1jYWxlbmRhciwgLm14LWNhbGVuZGFyLW1vbnRoLWRyb3Bkb3duLW9wdGlvbnMge1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIGxpZ2h0Z3JleTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTtcbn1cbiIsIi5teC1kYXRhZ3JpZCB0ciB7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xufVxuXG4ubXgtZGF0YWdyaWQgdHIubXgtZGF0YWdyaWQtcm93LWVtcHR5IHtcbiAgICBjdXJzb3I6IGRlZmF1bHQ7XG59XG5cbi5teC1kYXRhZ3JpZCB0YWJsZSB7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgbWF4LXdpZHRoOiAxMDAlO1xuICAgIHRhYmxlLWxheW91dDogZml4ZWQ7XG4gICAgbWFyZ2luLWJvdHRvbTogMDtcbn1cblxuLm14LWRhdGFncmlkIHRoLCAubXgtZGF0YWdyaWQgdGQge1xuICAgIHBhZGRpbmc6IDhweDtcbiAgICBsaW5lLWhlaWdodDogMS40Mjg1NzE0MztcbiAgICB2ZXJ0aWNhbC1hbGlnbjogYm90dG9tO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkICNkZGQ7XG59XG5cbi8qIGhlYWQgKi9cbi5teC1kYXRhZ3JpZCB0aCB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlOyAvKiBSZXF1aXJlZCBmb3IgdGhlIHBvc2l0aW9uaW5nIG9mIHRoZSBjb2x1bW4gcmVzaXplcnMgKi9cbiAgICBib3JkZXItYm90dG9tLXdpZHRoOiAycHg7XG59XG4ubXgtZGF0YWdyaWQtaGVhZC1jYXB0aW9uIHtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG59XG4ubXgtZGF0YWdyaWQtc29ydC1pY29uIHtcbiAgICBmbG9hdDogcmlnaHQ7XG4gICAgcGFkZGluZy1sZWZ0OiA1cHg7XG59XG5bZGlyPVwicnRsXCJdIC5teC1kYXRhZ3JpZC1zb3J0LWljb24ge1xuICAgIGZsb2F0OiBsZWZ0O1xuICAgIHBhZGRpbmc6IDAgNXB4IDAgMDtcbn1cbi5teC1kYXRhZ3JpZC1jb2x1bW4tcmVzaXplciB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRvcDogMDtcbiAgICBsZWZ0OiAtNnB4O1xuICAgIHdpZHRoOiAxMHB4O1xuICAgIGhlaWdodDogMTAwJTtcbiAgICBjdXJzb3I6IGNvbC1yZXNpemU7XG59XG5bZGlyPVwicnRsXCJdIC5teC1kYXRhZ3JpZC1jb2x1bW4tcmVzaXplciB7XG4gICAgbGVmdDogYXV0bztcbiAgICByaWdodDogLTZweDtcbn1cblxuLyogYm9keSAqL1xuLm14LWRhdGFncmlkIHRib2R5IHRyOmZpcnN0LWNoaWxkIHRkIHtcbiAgICBib3JkZXItdG9wOiBub25lO1xufVxuLm14LWRhdGFncmlkIHRib2R5IHRyOm50aC1jaGlsZCgybisxKSB0ZCB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogI2Y5ZjlmOTtcbn1cbi5teC1kYXRhZ3JpZCB0Ym9keSAuc2VsZWN0ZWQgdGQge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICNlZWU7XG59XG4ubXgtZGF0YWdyaWQtZGF0YS13cmFwcGVyIHtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG59XG4ubXgtZGF0YWdyaWQgdGJvZHkgaW1nIHtcbiAgICBtYXgtd2lkdGg6IDE2cHg7XG4gICAgbWF4LWhlaWdodDogMTZweDtcbn1cbi5teC1kYXRhZ3JpZCBpbnB1dCxcbi5teC1kYXRhZ3JpZCBzZWxlY3QsXG4ubXgtZGF0YWdyaWQgdGV4dGFyZWEge1xuICAgIGN1cnNvcjogYXV0bztcbn1cblxuLyogZm9vdCAqL1xuLm14LWRhdGFncmlkIHRmb290IHRoLFxuLm14LWRhdGFncmlkIHRmb290IHRkIHtcbiAgICBwYWRkaW5nOiAzcHggOHB4O1xufVxuLm14LWRhdGFncmlkIHRmb290IHRoIHtcbiAgICBib3JkZXItdG9wOiAxcHggc29saWQgI2RkZDtcbn1cbi5teC1kYXRhZ3JpZC5teC1jb250ZW50LWxvYWRpbmcgLm14LWNvbnRlbnQtbG9hZGVyIHtcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgd2lkdGg6IDkwJTtcbiAgICBhbmltYXRpb246IHBsYWNlaG9sZGVyR3JhZGllbnQgMXMgbGluZWFyIGluZmluaXRlO1xuICAgIGJvcmRlci1yYWRpdXM6IDRweDtcbiAgICBiYWNrZ3JvdW5kOiAjRjVGNUY1O1xuICAgIGJhY2tncm91bmQ6IHJlcGVhdGluZy1saW5lYXItZ3JhZGllbnQodG8gcmlnaHQsICNGNUY1RjUgMCUsICNGNUY1RjUgNSUsICNGOUY5RjkgNTAlLCAjRjVGNUY1IDk1JSwgI0Y1RjVGNSAxMDAlKTtcbiAgICBiYWNrZ3JvdW5kLXNpemU6IDIwMHB4IDEwMHB4O1xuICAgIGFuaW1hdGlvbi1maWxsLW1vZGU6IGJvdGg7XG59XG5Aa2V5ZnJhbWVzIHBsYWNlaG9sZGVyR3JhZGllbnQge1xuICAgIDAlIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogMTAwcHggMDsgfVxuICAgIDEwMCUgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMTAwcHggMDsgfVxufVxuXG4ubXgtZGF0YWdyaWQtdGFibGUtcmVzaXppbmcgdGgsXG4ubXgtZGF0YWdyaWQtdGFibGUtcmVzaXppbmcgdGQge1xuICAgIGN1cnNvcjogY29sLXJlc2l6ZSAhaW1wb3J0YW50O1xufVxuIiwiLm14LXRlbXBsYXRlZ3JpZC1jb250ZW50LXdyYXBwZXIge1xuICAgIGRpc3BsYXk6IHRhYmxlO1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGJvcmRlci1jb2xsYXBzZTogY29sbGFwc2U7XG4gICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbn1cbi5teC10ZW1wbGF0ZWdyaWQtcm93IHtcbiAgICBkaXNwbGF5OiB0YWJsZS1yb3c7XG59XG4ubXgtdGVtcGxhdGVncmlkLWl0ZW0ge1xuICAgIHBhZGRpbmc6IDVweDtcbiAgICBkaXNwbGF5OiB0YWJsZS1jZWxsO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkICNkZGQ7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG59XG4ubXgtdGVtcGxhdGVncmlkLWVtcHR5IHtcbiAgICBkaXNwbGF5OiB0YWJsZS1jZWxsO1xufVxuLm14LXRlbXBsYXRlZ3JpZC1pdGVtLnNlbGVjdGVkIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjVmNWY1O1xufVxuLm14LXRlbXBsYXRlZ3JpZC1pdGVtIC5teC10YWJsZSB0aCxcbi5teC10ZW1wbGF0ZWdyaWQtaXRlbSAubXgtdGFibGUgdGQge1xuICAgIHBhZGRpbmc6IDJweCA4cHg7XG59XG4iLCIubXgtc2Nyb2xsY29udGFpbmVyLWhvcml6b250YWwge1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGRpc3BsYXk6IHRhYmxlO1xuICAgIHRhYmxlLWxheW91dDogZml4ZWQ7XG59XG4ubXgtc2Nyb2xsY29udGFpbmVyLWhvcml6b250YWwgPiBkaXYge1xuICAgIGRpc3BsYXk6IHRhYmxlLWNlbGw7XG4gICAgdmVydGljYWwtYWxpZ246IHRvcDtcbn1cbi5teC1zY3JvbGxjb250YWluZXItd3JhcHBlciB7XG4gICAgcGFkZGluZzogMTBweDtcbn1cbi5teC1zY3JvbGxjb250YWluZXItbmVzdGVkIHtcbiAgICBwYWRkaW5nOiAwO1xufVxuLm14LXNjcm9sbGNvbnRhaW5lci1maXhlZCA+IC5teC1zY3JvbGxjb250YWluZXItbWlkZGxlID4gLm14LXNjcm9sbGNvbnRhaW5lci13cmFwcGVyLFxuLm14LXNjcm9sbGNvbnRhaW5lci1maXhlZCA+IC5teC1zY3JvbGxjb250YWluZXItbGVmdCA+IC5teC1zY3JvbGxjb250YWluZXItd3JhcHBlcixcbi5teC1zY3JvbGxjb250YWluZXItZml4ZWQgPiAubXgtc2Nyb2xsY29udGFpbmVyLWNlbnRlciA+IC5teC1zY3JvbGxjb250YWluZXItd3JhcHBlcixcbi5teC1zY3JvbGxjb250YWluZXItZml4ZWQgPiAubXgtc2Nyb2xsY29udGFpbmVyLXJpZ2h0ID4gLm14LXNjcm9sbGNvbnRhaW5lci13cmFwcGVyIHtcbiAgICBvdmVyZmxvdzogYXV0bztcbn1cblxuLm14LXNjcm9sbGNvbnRhaW5lci1tb3ZlLWluIHtcbiAgICB0cmFuc2l0aW9uOiBsZWZ0IDI1MG1zIGVhc2Utb3V0O1xufVxuLm14LXNjcm9sbGNvbnRhaW5lci1tb3ZlLW91dCB7XG4gICAgdHJhbnNpdGlvbjogbGVmdCAyNTBtcyBlYXNlLWluO1xufVxuLm14LXNjcm9sbGNvbnRhaW5lci1zaHJpbmsgLm14LXNjcm9sbGNvbnRhaW5lci10b2dnbGVhYmxlIHtcbiAgICB0cmFuc2l0aW9uLXByb3BlcnR5OiB3aWR0aDtcbn1cblxuLm14LXNjcm9sbGNvbnRhaW5lci10b2dnbGVhYmxlIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmO1xufVxuLm14LXNjcm9sbGNvbnRhaW5lci1zbGlkZSA+IC5teC1zY3JvbGxjb250YWluZXItdG9nZ2xlYWJsZSA+IC5teC1zY3JvbGxjb250YWluZXItd3JhcHBlciB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIHotaW5kZXg6IDE7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogaW5oZXJpdDtcbn1cbi5teC1zY3JvbGxjb250YWluZXItcHVzaCB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xufVxuLm14LXNjcm9sbGNvbnRhaW5lci1zaHJpbmsgPiAubXgtc2Nyb2xsY29udGFpbmVyLXRvZ2dsZWFibGUge1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG59XG4ubXgtc2Nyb2xsY29udGFpbmVyLXB1c2gubXgtc2Nyb2xsY29udGFpbmVyLW9wZW4gPiBkaXYsXG4ubXgtc2Nyb2xsY29udGFpbmVyLXNsaWRlLm14LXNjcm9sbGNvbnRhaW5lci1vcGVuID4gZGl2IHtcbiAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcbn1cbi5teC1zY3JvbGxjb250YWluZXItcHVzaC5teC1zY3JvbGxjb250YWluZXItb3BlbiA+IC5teC1zY3JvbGxjb250YWluZXItdG9nZ2xlYWJsZSxcbi5teC1zY3JvbGxjb250YWluZXItc2xpZGUubXgtc2Nyb2xsY29udGFpbmVyLW9wZW4gPiAubXgtc2Nyb2xsY29udGFpbmVyLXRvZ2dsZWFibGUge1xuICAgIHBvaW50ZXItZXZlbnRzOiBhdXRvO1xufVxuIiwiLm14LW5hdmJhci1pdGVtIGltZyxcbi5teC1uYXZiYXItc3ViaXRlbSBpbWcge1xuICAgIGhlaWdodDogMTZweDtcbn1cblxuIiwiLm14LW5hdmlnYXRpb250cmVlIC5uYXZiYXItaW5uZXIge1xuICAgIHBhZGRpbmctbGVmdDogMDtcbiAgICBwYWRkaW5nLXJpZ2h0OiAwO1xufVxuLm14LW5hdmlnYXRpb250cmVlIHVsIHtcbiAgICBsaXN0LXN0eWxlOiBub25lO1xufVxuLm14LW5hdmlnYXRpb250cmVlIHVsIGxpIHtcbiAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI2RmZTZlYTtcbn1cbi5teC1uYXZpZ2F0aW9udHJlZSBsaTpsYXN0LWNoaWxkIHtcbiAgICBib3JkZXItc3R5bGU6IG5vbmU7XG59XG4ubXgtbmF2aWdhdGlvbnRyZWUgYSB7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgcGFkZGluZzogNXB4IDEwcHg7XG4gICAgY29sb3I6ICM3Nzc7XG4gICAgdGV4dC1zaGFkb3c6IDAgMXB4IDAgI2ZmZjtcbiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG59XG4ubXgtbmF2aWdhdGlvbnRyZWUgYS5hY3RpdmUge1xuICAgIGNvbG9yOiAjRkZGO1xuICAgIHRleHQtc2hhZG93OiBub25lO1xuICAgIGJhY2tncm91bmQ6ICMzNDk4REI7XG4gICAgYm9yZGVyLXJhZGl1czogM3B4O1xufVxuLm14LW5hdmlnYXRpb250cmVlIC5teC1uYXZpZ2F0aW9udHJlZS1jb2xsYXBzZWQgdWwge1xuICAgIGRpc3BsYXk6IG5vbmU7XG59XG4ubXgtbmF2aWdhdGlvbnRyZWUgdWwge1xuICAgIG1hcmdpbjogMDtcbiAgICBwYWRkaW5nOiAwO1xufVxuLm14LW5hdmlnYXRpb250cmVlIHVsIGxpIHtcbiAgICBwYWRkaW5nOiA1cHggMDtcbn1cbi5teC1uYXZpZ2F0aW9udHJlZSB1bCBsaSB1bCB7XG4gICAgcGFkZGluZzogMDtcbiAgICBtYXJnaW4tbGVmdDogMTBweDtcbn1cbi5teC1uYXZpZ2F0aW9udHJlZSB1bCBsaSB1bCBsaSB7XG4gICAgbWFyZ2luLWxlZnQ6IDhweDtcbiAgICBwYWRkaW5nOiA1cHggMDtcbn1cbltkaXI9XCJydGxcIl0gLm14LW5hdmlnYXRpb250cmVlIHVsIGxpIHVsIGxpIHtcbiAgICBtYXJnaW4tbGVmdDogYXV0bztcbiAgICBtYXJnaW4tcmlnaHQ6IDhweDtcbn1cbi5teC1uYXZpZ2F0aW9udHJlZSB1bCBsaSB1bCBsaSB1bCBsaSB7XG4gICAgZm9udC1zaXplOiAxMHB4O1xuICAgIHBhZGRpbmctdG9wOiAzcHg7XG4gICAgcGFkZGluZy1ib3R0b206IDNweDtcbn1cbi5teC1uYXZpZ2F0aW9udHJlZSB1bCBsaSB1bCBsaSB1bCBsaSBpbWcge1xuICAgIHZlcnRpY2FsLWFsaWduOiB0b3A7XG59XG4iLCIubXgtbGluayBpbWcsXG4ubXgtYnV0dG9uIGltZyB7XG4gICAgaGVpZ2h0OiAxNnB4O1xufVxuLm14LWxpbmsge1xuICAgIHBhZGRpbmc6IDZweCAxMnB4O1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbn1cbiIsIi5teC1ncm91cGJveCB7XG4gICAgbWFyZ2luLWJvdHRvbTogMTBweDtcbn1cbi5teC1ncm91cGJveC1oZWFkZXIge1xuICAgIG1hcmdpbjogMDtcbiAgICBwYWRkaW5nOiAxMHB4IDE1cHg7XG4gICAgY29sb3I6ICNlZWU7XG4gICAgYmFja2dyb3VuZDogIzMzMztcbiAgICBmb250LXNpemU6IGluaGVyaXQ7XG4gICAgbGluZS1oZWlnaHQ6IGluaGVyaXQ7XG4gICAgYm9yZGVyLXJhZGl1czogNHB4IDRweCAwIDA7XG59XG4ubXgtZ3JvdXBib3gtY29sbGFwc2libGUgPiAubXgtZ3JvdXBib3gtaGVhZGVyIHtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG59XG4ubXgtZ3JvdXBib3guY29sbGFwc2VkID4gLm14LWdyb3VwYm94LWhlYWRlciB7XG4gICAgYm9yZGVyLXJhZGl1czogNHB4O1xufVxuLm14LWdyb3VwYm94LWJvZHkge1xuICAgIHBhZGRpbmc6IDhweDtcbiAgICBib3JkZXI6IDFweCBzb2xpZCAjZGRkO1xuICAgIGJvcmRlci1yYWRpdXM6IDRweDtcbn1cbi5teC1ncm91cGJveC5jb2xsYXBzZWQgPiAubXgtZ3JvdXBib3gtYm9keSB7XG4gICAgZGlzcGxheTogbm9uZTtcbn1cbi5teC1ncm91cGJveC1oZWFkZXIgKyAubXgtZ3JvdXBib3gtYm9keSB7XG4gICAgYm9yZGVyLXRvcDogbm9uZTtcbiAgICBib3JkZXItcmFkaXVzOiAwIDAgNHB4IDRweDtcbn1cbi5teC1ncm91cGJveC1jb2xsYXBzZS1pY29uIHtcbiAgICBmbG9hdDogcmlnaHQ7XG59XG5bZGlyPVwicnRsXCJdIC5teC1ncm91cGJveC1jb2xsYXBzZS1pY29uIHtcbiAgICBmbG9hdDogbGVmdDtcbn1cbiIsIi5teC1kYXRhdmlldyB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xufVxuLm14LWRhdGF2aWV3LWNvbnRyb2xzIHtcbiAgICBwYWRkaW5nOiAxOXB4IDIwcHggMTJweDtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjVmNWY1O1xuICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCAjZWVlO1xufVxuXG4ubXgtZGF0YXZpZXctY29udHJvbHMgLm14LWJ1dHRvbiB7XG4gICAgbWFyZ2luLWJvdHRvbTogOHB4O1xufVxuXG4ubXgtZGF0YXZpZXctY29udHJvbHMgLm14LWJ1dHRvbiArIC5teC1idXR0b24ge1xuICAgIG1hcmdpbi1sZWZ0OiAwLjNlbTtcbn1cblxuLm14LWRhdGF2aWV3LW1lc3NhZ2Uge1xuICAgIGJhY2tncm91bmQ6ICNmZmY7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRvcDogMDtcbiAgICByaWdodDogMDtcbiAgICBib3R0b206IDA7XG4gICAgbGVmdDogMDtcbn1cbi5teC1kYXRhdmlldy1tZXNzYWdlID4gZGl2IHtcbiAgICBkaXNwbGF5OiB0YWJsZTtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBoZWlnaHQ6IDEwMCU7XG59XG4ubXgtZGF0YXZpZXctbWVzc2FnZSA+IGRpdiA+IHAge1xuICAgIGRpc3BsYXk6IHRhYmxlLWNlbGw7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG59XG5cbi8qIFRvcC1sZXZlbCBkYXRhIHZpZXcgaW4gd2luZG93IGlzIGEgc3BlY2lhbCBjYXNlLCBoYW5kbGUgaXQgYXMgc3VjaC4gKi9cbi5teC13aW5kb3ctdmlldyAubXgtd2luZG93LWJvZHkge1xuICAgIHBhZGRpbmc6IDA7XG59XG4ubXgtd2luZG93LXZpZXcgLm14LXdpbmRvdy1ib2R5ID4gLm14LWRhdGF2aWV3ID4gLm14LWRhdGF2aWV3LWNvbnRlbnQsXG4ubXgtd2luZG93LXZpZXcgLm14LXdpbmRvdy1ib2R5ID4gLm14LXBsYWNlaG9sZGVyID4gLm14LWRhdGF2aWV3ID4gLm14LWRhdGF2aWV3LWNvbnRlbnQge1xuICAgIHBhZGRpbmc6IDE1cHg7XG59XG4ubXgtd2luZG93LXZpZXcgLm14LXdpbmRvdy1ib2R5ID4gLm14LWRhdGF2aWV3ID4gLm14LWRhdGF2aWV3LWNvbnRyb2xzLFxuLm14LXdpbmRvdy12aWV3IC5teC13aW5kb3ctYm9keSA+IC5teC1wbGFjZWhvbGRlciA+IC5teC1kYXRhdmlldyA+IC5teC1kYXRhdmlldy1jb250cm9scyB7XG4gICAgYm9yZGVyLXJhZGl1czogMHB4IDBweCA2cHggNnB4O1xufVxuIiwiLm14LWRpYWxvZyB7XG4gICAgcG9zaXRpb246IGZpeGVkO1xuICAgIGxlZnQ6IGF1dG87XG4gICAgcmlnaHQ6IGF1dG87XG4gICAgcGFkZGluZzogMDtcbiAgICB3aWR0aDogNTAwcHg7XG4gICAgLyogSWYgdGhlIG1hcmdpbiBpcyBzZXQgdG8gYXV0bywgSUU5IHJlcG9ydHMgdGhlIGNhbGN1bGF0ZWQgdmFsdWUgb2YgdGhlXG4gICAgICogbWFyZ2luIGFzIHRoZSBhY3R1YWwgdmFsdWUuIE90aGVyIGJyb3dzZXJzIHdpbGwganVzdCByZXBvcnQgMC4gRWxpbWluYXRlXG4gICAgICogdGhpcyBkaWZmZXJlbmNlIGJ5IHNldHRpbmcgbWFyZ2luIHRvIDAgZm9yIGV2ZXJ5IGJyb3dzZXIuICovXG4gICAgbWFyZ2luOiAwO1xufVxuLm14LWRpYWxvZy1oZWFkZXIge1xuICAgIGN1cnNvcjogbW92ZTtcbn1cbi5teC1kaWFsb2ctYm9keSB7XG4gICAgb3ZlcmZsb3c6IGF1dG87XG59XG4iLCIubXgtd2luZG93IHtcbiAgICBwb3NpdGlvbjogZml4ZWQ7XG4gICAgbGVmdDogYXV0bztcbiAgICByaWdodDogYXV0bztcbiAgICBwYWRkaW5nOiAwO1xuICAgIHdpZHRoOiA2MDBweDtcbiAgICAvKiBJZiB0aGUgbWFyZ2luIGlzIHNldCB0byBhdXRvLCBJRTkgcmVwb3J0cyB0aGUgY2FsY3VsYXRlZCB2YWx1ZSBvZiB0aGVcbiAgICAgKiBtYXJnaW4gYXMgdGhlIGFjdHVhbCB2YWx1ZS4gT3RoZXIgYnJvd3NlcnMgd2lsbCBqdXN0IHJlcG9ydCAwLiBFbGltaW5hdGVcbiAgICAgKiB0aGlzIGRpZmZlcmVuY2UgYnkgc2V0dGluZyBtYXJnaW4gdG8gMCBmb3IgZXZlcnkgYnJvd3Nlci4gKi9cbiAgICBtYXJnaW46IDA7XG59XG4ubXgtd2luZG93LWNvbnRlbnQge1xuICAgIGhlaWdodDogMTAwJTtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xufVxuLm14LXdpbmRvdy1hY3RpdmUgLm14LXdpbmRvdy1oZWFkZXIge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICNmNWY1ZjU7XG4gICAgYm9yZGVyLXJhZGl1czogNnB4IDZweCAwIDA7XG59XG4ubXgtd2luZG93LWhlYWRlciB7XG4gICAgY3Vyc29yOiBtb3ZlO1xufVxuLm14LXdpbmRvdy1ib2R5IHtcbiAgICBvdmVyZmxvdzogYXV0bztcbn1cbiIsIi5teC1kcm9wZG93bi1saXN0ICoge1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbn1cbi5teC1kcm9wZG93bi1saXN0IGltZyB7XG4gICAgd2lkdGg6IDM1cHg7XG4gICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgICBtYXJnaW4tcmlnaHQ6IDEwcHg7XG59XG5bZGlyPVwicnRsXCJdIC5teC1kcm9wZG93bi1saXN0IGltZyB7XG4gICAgbWFyZ2luLWxlZnQ6IDEwcHg7XG4gICAgbWFyZ2luLXJpZ2h0OiBhdXRvO1xufVxuXG4ubXgtZHJvcGRvd24tbGlzdCB7XG4gICAgcGFkZGluZzogMDtcbiAgICBsaXN0LXN0eWxlOiBub25lO1xufVxuLm14LWRyb3Bkb3duLWxpc3QgPiBsaSB7XG4gICAgcGFkZGluZzogNXB4IDEwcHggMTBweDtcbiAgICBib3JkZXI6IDFweCAjZGRkO1xuICAgIGJvcmRlci1zdHlsZTogc29saWQgc29saWQgbm9uZTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmO1xufVxuLm14LWRyb3Bkb3duLWxpc3QgPiBsaTpmaXJzdC1jaGlsZCB7XG4gICAgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogNHB4O1xuICAgIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiA0cHg7XG59XG4ubXgtZHJvcGRvd24tbGlzdCA+IGxpOmxhc3QtY2hpbGQge1xuICAgIGJvcmRlci1ib3R0b20tc3R5bGU6IHNvbGlkO1xuICAgIGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IDRweDtcbiAgICBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogNHB4O1xufVxuLm14LWRyb3Bkb3duLWxpc3Qtc3RyaXBlZCA+IGxpOm50aC1jaGlsZCgybisxKSB7XG4gICAgYmFja2dyb3VuZDogI2Y5ZjlmOTtcbn1cbi5teC1kcm9wZG93bi1saXN0ID4gbGk6aG92ZXIge1xuICAgIGJhY2tncm91bmQ6ICNmNWY1ZjU7XG59XG4iLCIubXgtaGVhZGVyIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgcGFkZGluZzogOXB4O1xuICAgIGJhY2tncm91bmQ6ICMzMzM7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xufVxuLm14LWhlYWRlci1jZW50ZXIge1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICBjb2xvcjogI2VlZTtcbiAgICBsaW5lLWhlaWdodDogMzBweDsgLyogaGVpZ2h0IG9mIGJ1dHRvbnMgKi9cbn1cbmJvZHlbZGlyPVwibHRyXCJdIC5teC1oZWFkZXItbGVmdCxcbmJvZHlbZGlyPVwicnRsXCJdIC5teC1oZWFkZXItcmlnaHQge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0b3A6IDlweDtcbiAgICBsZWZ0OiA5cHg7XG59XG5ib2R5W2Rpcj1cImx0clwiXSAubXgtaGVhZGVyLXJpZ2h0LFxuYm9keVtkaXI9XCJydGxcIl0gLm14LWhlYWRlci1sZWZ0IHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgdG9wOiA5cHg7XG4gICAgcmlnaHQ6IDlweDtcbn1cbiIsIi5teC10aXRsZSB7XG4gICAgbWFyZ2luLWJvdHRvbTogMHB4O1xuICAgIG1hcmdpbi10b3A6IDBweDtcbn1cbiIsIi5teC1saXN0dmlldyB7XG4gICAgcGFkZGluZzogOHB4O1xufVxuLm14LWxpc3R2aWV3ID4gdWwge1xuICAgIHBhZGRpbmc6IDBweDtcbiAgICBsaXN0LXN0eWxlOiBub25lO1xufVxuLm14LWxpc3R2aWV3ID4gdWwgPiBsaSB7XG4gICAgcGFkZGluZzogNXB4IDEwcHggMTBweDtcbiAgICBib3JkZXI6IDFweCAjZGRkO1xuICAgIGJvcmRlci1zdHlsZTogc29saWQgc29saWQgbm9uZTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmO1xuICAgIG91dGxpbmU6IG5vbmU7XG59XG4ubXgtbGlzdHZpZXcgPiB1bCA+IGxpOmZpcnN0LWNoaWxkIHtcbiAgICBib3JkZXItdG9wLWxlZnQtcmFkaXVzOiA0cHg7XG4gICAgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IDRweDtcbn1cbi5teC1saXN0dmlldyA+IHVsID4gbGk6bGFzdC1jaGlsZCB7XG4gICAgYm9yZGVyLWJvdHRvbS1zdHlsZTogc29saWQ7XG4gICAgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogNHB4O1xuICAgIGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiA0cHg7XG59XG4ubXgtbGlzdHZpZXcgbGk6bnRoLWNoaWxkKDJuKzEpIHtcbiAgICBiYWNrZ3JvdW5kOiAjZjlmOWY5O1xufVxuLm14LWxpc3R2aWV3IGxpOm50aC1jaGlsZCgybisxKTpob3ZlciB7XG4gICAgYmFja2dyb3VuZDogI2Y1ZjVmNTtcbn1cbi5teC1saXN0dmlldyA+IHVsID4gbGkuc2VsZWN0ZWQge1xuICAgIGJhY2tncm91bmQ6ICNlZWU7XG59XG4ubXgtbGlzdHZpZXctY2xpY2thYmxlIHVsICoge1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbn1cbi5teC1saXN0dmlldy1lbXB0eSB7XG4gICAgY29sb3I6ICM5OTk7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xufVxuLm14LWxpc3R2aWV3IC5teC1saXN0dmlldy1sb2FkaW5nIHtcbiAgICBwYWRkaW5nOiAxMHB4O1xuICAgIGxpbmUtaGVpZ2h0OiAwO1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbn1cbi5teC1saXN0dmlldy1zZWFyY2hiYXIge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgbWFyZ2luLWJvdHRvbTogMTBweDtcbn1cbi5teC1saXN0dmlldy1zZWFyY2hiYXIgPiBpbnB1dCB7XG4gICAgd2lkdGg6IDEwMCU7XG59XG4ubXgtbGlzdHZpZXctc2VhcmNoYmFyID4gYnV0dG9uIHtcbiAgICBtYXJnaW4tbGVmdDogNXB4O1xufVxuW2Rpcj1cInJ0bFwiXSAubXgtbGlzdHZpZXctc2VhcmNoYmFyID4gYnV0dG9uIHtcbiAgICBtYXJnaW4tbGVmdDogMDtcbiAgICBtYXJnaW4tcmlnaHQ6IDVweDtcbn1cbi5teC1saXN0dmlldy1zZWxlY3Rpb24ge1xuICAgIGRpc3BsYXk6IHRhYmxlLWNlbGw7XG4gICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgICBwYWRkaW5nOiAwIDE1cHggMCA1cHg7XG59XG5bZGlyPVwicnRsXCJdIC5teC1saXN0dmlldy1zZWxlY3Rpb24ge1xuICAgIHBhZGRpbmc6IDAgNXB4IDAgMTVweDtcbn1cbi5teC1saXN0dmlldy1zZWxlY3RhYmxlIC5teC1saXN0dmlldy1jb250ZW50IHtcbiAgICBkaXNwbGF5OiB0YWJsZS1jZWxsO1xuICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gICAgd2lkdGg6IDEwMCU7XG59XG4ubXgtbGlzdHZpZXcgLnNlbGVjdGVkIHtcbiAgICBiYWNrZ3JvdW5kOiAjZGVmO1xufVxuLm14LWxpc3R2aWV3IC5teC10YWJsZSB0aCxcbi5teC1saXN0dmlldyAubXgtdGFibGUgdGQge1xuICAgIHBhZGRpbmc6IDJweDtcbn1cbiIsIi5teC1sb2dpbiAuZm9ybS1jb250cm9sIHtcbiAgICBtYXJnaW4tdG9wOiAxMHB4O1xufVxuIiwiLm14LW1lbnViYXIge1xuICAgIHBhZGRpbmc6IDhweDtcbn1cbi5teC1tZW51YmFyLWljb24ge1xuICAgIGhlaWdodDogMTZweDtcbn1cbi5teC1tZW51YmFyLW1vcmUtaWNvbiB7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgIHdpZHRoOiAxNnB4O1xuICAgIGhlaWdodDogMTZweDtcbiAgICBiYWNrZ3JvdW5kOiB1cmwoZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFDTUFBQUFqQ0FZQUFBQWUyYk5aQUFBQUdYUkZXSFJUYjJaMGQyRnlaUUJCWkc5aVpTQkpiV0ZuWlZKbFlXUjVjY2xsUEFBQUFLTkpSRUZVZU5waS9QLy9QOE5nQVV3TWd3aU1PbWJVTWFPT0dYWE1xR05HSFRQWUhNT0NUZkRzMmJNZVFLb09pSTFCWENCdU1qWTIza0ZyZFl6b1RRaWdSbThndFFXTEcwT0JCcXlobFRwYzBkU09JeFRyYUt3T3EyUFVjV2hXcDdFNnJJNjVpVVB6VFJxcncrcVlHaHlhbTJpc0R0TXh3RVMxQ1VnRkFmRnhxQkNJRGtKUGJOUldoelUzalJaNm80NFpkY3lvWTBZZE0rcVlVY2NNVXNjQUJCZ0FVWHBFakUvQnMvSUFBQUFBU1VWT1JLNUNZSUk9KSBuby1yZXBlYXQgY2VudGVyIGNlbnRlcjtcbiAgICBiYWNrZ3JvdW5kLXNpemU6IDE2cHggMTZweDtcbiAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xufVxuIiwiLm14LW5hdmlnYXRpb25saXN0IHtcbiAgICBwYWRkaW5nOiA4cHg7XG59XG4ubXgtbmF2aWdhdGlvbmxpc3QgbGk6aG92ZXIsXG4ubXgtbmF2aWdhdGlvbmxpc3QgbGk6Zm9jdXMsXG4ubXgtbmF2aWdhdGlvbmxpc3QgbGkuYWN0aXZlIHtcbiAgICBjb2xvcjogI0ZGRjtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMzQ5OERCO1xufVxuLm14LW5hdmlnYXRpb25saXN0ICoge1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbn1cbi5teC1uYXZpZ2F0aW9ubGlzdCAudGFibGUgdGgsXG4ubXgtbmF2aWdhdGlvbmxpc3QgLnRhYmxlIHRkIHtcbiAgICBwYWRkaW5nOiAycHg7XG59XG4iLCIubXgtcHJvZ3Jlc3Mge1xuICAgIHBvc2l0aW9uOiBmaXhlZDtcbiAgICB0b3A6IDMwJTtcbiAgICBsZWZ0OiAwO1xuICAgIHJpZ2h0OiAwO1xuICAgIG1hcmdpbjogYXV0bztcbiAgICB3aWR0aDogMjUwcHg7XG4gICAgbWF4LXdpZHRoOiA5MCU7XG4gICAgYmFja2dyb3VuZDogIzMzMztcbiAgICBvcGFjaXR5OiAwLjg7XG4gICAgei1pbmRleDogNTAwMDtcbiAgICBib3JkZXItcmFkaXVzOiA0cHg7XG4gICAgcGFkZGluZzogMjBweCAxNXB4O1xuICAgIHRyYW5zaXRpb246IG9wYWNpdHkgMC40cyBlYXNlLWluLW91dDtcbn1cbi5teC1wcm9ncmVzcy1oaWRkZW4ge1xuICAgIG9wYWNpdHk6IDA7XG59XG4ubXgtcHJvZ3Jlc3MtbWVzc2FnZSB7XG4gICAgY29sb3I6ICNmZmY7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIG1hcmdpbi1ib3R0b206IDE1cHg7XG59XG4ubXgtcHJvZ3Jlc3MtZW1wdHkgLm14LXByb2dyZXNzLW1lc3NhZ2Uge1xuICAgIGRpc3BsYXk6IG5vbmU7XG59XG4ubXgtcHJvZ3Jlc3MtaW5kaWNhdG9yIHtcbiAgICB3aWR0aDogNzBweDtcbiAgICBoZWlnaHQ6IDEwcHg7XG4gICAgbWFyZ2luOiBhdXRvO1xuICAgIGJhY2tncm91bmQ6IHVybChkYXRhOmltYWdlL2dpZjtiYXNlNjQsUjBsR09EbGhSZ0FLQU1RQUFEbzZPb0dCZ1ZwYVduQndjSTZPanF5c3JGSlNVbVJrWkQ4L1AweE1UTTdPenFlbnAxaFlXRjFkWFVoSVNISnljb2VIaDB0TFMxZFhWNmlvcU0vUHoyVmxaVDA5UFRjM04wQkFRSVdGaGRiVzFseGNYSzJ0clVGQlFUTXpNd0FBQUNIL0MwNUZWRk5EUVZCRk1pNHdBd0VBQUFBaCtRUUVEQUFBQUN3QUFBQUFSZ0FLQUFBRms2RG5YUmFHV1plb3JxU0pybkI3cHJBcXY3VjQweDdRL1VCQXpnZjhDV3ZFNGhHV0RBNkx4aEVVeU5OTmYxWHBOWHU1ZHJoZWt0Y0NzNHpMNTVYNVNsYVBNVjRNREg2VnIraFR1d29QMVl2NFJTWnhjNE4zaFh1SGYzRnJVMjBxakZDT0lwQkZraDZVUUphWVB5aGhNWjRzb0RhaVZsczlVMHNyVFZGSXFFOVFxU3FySFVzN09Ub2xNN2NqdVRnNXRyZkFJUUFoK1FRRURBQUFBQ3dBQUFBQUNnQUtBQUFGSktEbkhZV2lGSWZvUVZyclFxTXJhK1RzbG5acjV0ckpvN3dVYXdZVFZRb1VDa29VQWdBaCtRUUVEQUFBQUN3QUFBQUFHUUFLQUFBRldhRG5NY1N5RUpLb3JrZWhLTVdoUGx4dFA2c0thWHdQZVJLYmtNUElIWHBJellFd3RCRnloV1N2c0dqV0ZqbUZsS2VvV3JFcjdWYkJ0RDVYMFcyQllTVWF0MG9QYllqTGVYYkpuNGcwbVJDS2RpSVZCUlFVTVNJaEFDSDVCQVFNQUFBQUxBQUFBQUFvQUFvQUFBV0tvT2NsUXhBTWthaXVETEVzaExUT1I2RW94YUUyV2U4M005R0RReXcrZ2g2SVpzbUVlQ0srYUNZeGt4U3ZIQWFOeWRVY0JsTGZZRWJBRmdtelFwZFpDSVI3Z2RuQ1RGek1GT3Vsd3YyT3IrWjBkaXQ0ZVFwZ2IyTXJaWFJvSzJwNUJRbHZVek1NZEZsYmVUbzhVa0JCUTFoSFFVcGRUaUlrSmdOVVNCNHRFeE1FV3F3VkJSUVVPU0loQUNINUJBUU1BQUFBTEFBQUFBQTNBQW9BQUFXOG9PY2hoaUFZaUtpdXlSQUVRN1RPRExFc2hEU3ZSNkVvaFlQS3NTa2FIVHRQSThOc05wSVBqblQ2U0VJMDJDeGtaT3h1VXF0SWM1eEp6Q1RUTkljeE8yVGZtb1BCYXpUTUJ1VG1ZRVpRVHdrekJYQlpCUUowUlFJekFYbE1BVE1MZmxJTE13cURXQXFHaDRrcmk0eU9LNUNSa3l1VmxncHpoM1lyZUl4N0szMlJnQ3VDbGdVSWgxOHpDWXhsTkpGcmJaWnhIa1JlU0R0TFpFODdVV3BWTzFkd1d5SVlKU2RnU1MwdkEyWkpIalVURXdSczNoVUZGQlJCSWlFQUlma0VCQXdBQUFBc0FBQUFBRVlBQ2dBQUJmQ2c1MTBXaGxtWHFLNklJUWdHc3M3SkVBUkROSzhNc1N3RXlVNTFLQ2dVaFlNSzBHazZBVVBIWmtwMURCdVpyTFl4ZkhDKzRNY1FvaW1iSVNPbnVwTmlVZDhiMlNxaXJXY1NNd2w0ejJITURtYUJHZ2NXYTA0V013WndWQVl6QTNaYUF6TUVmR0FFTXdXQ1pnVVloazBZTXdLTFV3SXpBWkJaQVRNTGxWOExNd3FhWlFxZG5xQXJvcU9sSzZlb3FpdXNyYThyc2JJS2haNklLNHFqalN1UHFKSXJsSzJYSzVteUJSZWViRE1JbzNFMHFIY3pESzE5ZjdLREhreHJVRHRTY0ZZN1dIWmNPMTU4WWp0a2dtZ2lKRXlnR0NJQ2d3c1ljb2JVdURFQUQ4RWVFeVlROEVPd1FnRUtGSktJQ0FFQUlma0VCQXdBQUFBc0R3QUFBRGNBQ2dBQUJicWc1MTBXaGxtWHFLNklJUWdHc3M3SkVBUkROSzhNc1N3RWlRclFLUm9CTzQ5ancydzZrbzJNZE5wSVBqalk3R05rN0haU3JLWjRJMXRGcHVoTVlpYkp1amtNaTlkb21SbkdUY05za0o0T1pnUnZXUVFZYzBVWU13SjRUQUl6QVgxU0FUTUxnbGdMaFlhSUs0cUxqU3VQa0pJcmxKVUxjb1oxSzNlTGVpdDhrSDhyZ1pVRUY0WmZNd2lMWkRTUWFqTU1sWEFlUkY1SU8wdGpUenRSYVZVN1YyOWJJaVFtS0VraUdDNHdaVWsxTndOcjJEMFRFd1FNSWlFQUlma0VCQXdBQUFBc0hnQUFBQ2dBQ2dBQUJZZWc1MTBXaGxtWHFLNklJUWdHc3M3SkVBUkRwQUpkN3dNemtXTkRMRHFDbmtabXlXeU1mTkJPaWxXc2JtU3JDSE9iU1ZpaVBzdk1ZQzBhWmdNdWM0QUI5ekF6UVprb21BWFV5MERiRFYvSjUzVXJkM2dCWDI1aUsyUnpaeXRwZUFNWGJsSXpDSE5YTkhoZEhqeFJRRUZEVmtkQlNseE9JaVFtS0VnaUdDNHdXRWcxTndNSklpRUFJZmtFQkF3QUFBQXNMUUFBQUJrQUNnQUFCVldnNTEwV2hsbVhxSzZJSVFnR29nSmRiUU9yNm14ODc0eTJZQ2ZGNmhrM0NJdlFac2taamowRFpsbkQ1QVJRbm1CS3RhNndXWUdTMmx3OXM0WUxkWmhEWkpFZW1oQ1g4K3lPUHhISmhLcXJNQzR3TWg0aEFDSDVCQVFNQUFBQUxEd0FBQUFLQUFvQUFBVWlvT2RkRm9aWmwrZ0JYZXNDb3l0MzVPeVdkbXZtM2NtanZCUnJCaE9SVENoUkNBQTcpO1xufVxuIiwiLm14LXJlbG9hZC1ub3RpZmljYXRpb24ge1xuICAgIHBvc2l0aW9uOiBmaXhlZDtcbiAgICB6LWluZGV4OiAxMDAxO1xuICAgIHRvcDogMDtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBwYWRkaW5nOiAxcmVtO1xuXG4gICAgYm9yZGVyOiAxcHggc29saWQgaHNsKDIwMCwgOTYlLCA0MSUpO1xuICAgIGJhY2tncm91bmQtY29sb3I6IGhzbCgyMDAsIDk2JSwgNDQlKTtcblxuICAgIGJveC1zaGFkb3c6IDAgNXB4IDIwcHggcmdiYSgxLCAzNywgNTUsIDAuMTYpO1xuICAgIGNvbG9yOiB3aGl0ZTtcblxuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICBmb250LXNpemU6IDE0cHg7XG59XG4iLCIubXgtcmVzaXplci1uLFxuLm14LXJlc2l6ZXItcyB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIGxlZnQ6IDA7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgaGVpZ2h0OiAxMHB4O1xufVxuLm14LXJlc2l6ZXItbiB7XG4gICAgdG9wOiAtNXB4O1xuICAgIGN1cnNvcjogbi1yZXNpemU7XG59XG4ubXgtcmVzaXplci1zIHtcbiAgICBib3R0b206IC01cHg7XG4gICAgY3Vyc29yOiBzLXJlc2l6ZTtcbn1cblxuLm14LXJlc2l6ZXItZSxcbi5teC1yZXNpemVyLXcge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0b3A6IDA7XG4gICAgd2lkdGg6IDEwcHg7XG4gICAgaGVpZ2h0OiAxMDAlO1xufVxuLm14LXJlc2l6ZXItZSB7XG4gICAgcmlnaHQ6IC01cHg7XG4gICAgY3Vyc29yOiBlLXJlc2l6ZTtcbn1cbi5teC1yZXNpemVyLXcge1xuICAgIGxlZnQ6IC01cHg7XG4gICAgY3Vyc29yOiB3LXJlc2l6ZTtcbn1cblxuLm14LXJlc2l6ZXItbncsXG4ubXgtcmVzaXplci1uZSxcbi5teC1yZXNpemVyLXN3LFxuLm14LXJlc2l6ZXItc2Uge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB3aWR0aDogMjBweDtcbiAgICBoZWlnaHQ6IDIwcHg7XG59XG5cbi5teC1yZXNpemVyLW53LFxuLm14LXJlc2l6ZXItbmUge1xuICAgIHRvcDogLTVweDtcbn1cbi5teC1yZXNpemVyLXN3LFxuLm14LXJlc2l6ZXItc2Uge1xuICAgIGJvdHRvbTogLTVweDtcbn1cbi5teC1yZXNpemVyLW53LFxuLm14LXJlc2l6ZXItc3cge1xuICAgIGxlZnQ6IC01cHg7XG59XG4ubXgtcmVzaXplci1uZSxcbi5teC1yZXNpemVyLXNlIHtcbiAgICByaWdodDogLTVweDtcbn1cblxuLm14LXJlc2l6ZXItbncge1xuICAgIGN1cnNvcjogbnctcmVzaXplO1xufVxuLm14LXJlc2l6ZXItbmUge1xuICAgIGN1cnNvcjogbmUtcmVzaXplO1xufVxuLm14LXJlc2l6ZXItc3cge1xuICAgIGN1cnNvcjogc3ctcmVzaXplO1xufVxuLm14LXJlc2l6ZXItc2Uge1xuICAgIGN1cnNvcjogc2UtcmVzaXplO1xufVxuIiwiLm14LXRleHQge1xuICAgIHdoaXRlLXNwYWNlOiBwcmUtbGluZTtcbn1cbiIsIi5teC10ZXh0YXJlYSB0ZXh0YXJlYSB7XG4gICAgcmVzaXplOiBub25lO1xuICAgIG92ZXJmbG93LXk6IGhpZGRlbjtcbn1cbi5teC10ZXh0YXJlYSAubXgtdGV4dGFyZWEtbm9yZXNpemUge1xuICAgIGhlaWdodDogYXV0bztcbiAgICByZXNpemU6IHZlcnRpY2FsO1xuICAgIG92ZXJmbG93LXk6IGF1dG87XG59XG4ubXgtdGV4dGFyZWEgLm14LXRleHRhcmVhLWNvdW50ZXIge1xuICAgIGZvbnQtc2l6ZTogc21hbGxlcjtcbn1cbi5teC10ZXh0YXJlYSAuZm9ybS1jb250cm9sLXN0YXRpYyB7XG4gICAgd2hpdGUtc3BhY2U6IHByZS1saW5lO1xufVxuIiwiLm14LXVuZGVybGF5IHtcbiAgICBwb3NpdGlvbjogZml4ZWQ7XG4gICAgdG9wOiAwO1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGhlaWdodDogMTAwJTtcbiAgICB6LWluZGV4OiAxMDAwO1xuICAgIG9wYWNpdHk6IDAuNTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMzMzO1xufVxuIiwiLm14LWltYWdlem9vbSB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIGRpc3BsYXk6IHRhYmxlO1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGhlaWdodDogMTAwJTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjOTk5O1xufVxuLm14LWltYWdlem9vbS13cmFwcGVyIHtcbiAgICBkaXNwbGF5OiB0YWJsZS1jZWxsO1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xufVxuLm14LWltYWdlem9vbS1pbWFnZSB7XG4gICAgbWF4LXdpZHRoOiBub25lO1xufVxuIiwiLm14LWRyb3Bkb3duIGxpIHtcbiAgICBwYWRkaW5nOiAzcHggMjBweDtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG59XG4ubXgtZHJvcGRvd24gbGFiZWwge1xuICAgIHBhZGRpbmc6IDA7XG4gICAgY29sb3I6ICMzMzM7XG4gICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG59XG4ubXgtZHJvcGRvd24gaW5wdXQge1xuICAgIG1hcmdpbjogMDtcbiAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbn1cbi5teC1kcm9wZG93biAuc2VsZWN0ZWQge1xuICAgIGJhY2tncm91bmQ6ICNmOGY4Zjg7XG59XG4ubXgtc2VsZWN0Ym94IHtcbiAgICB0ZXh0LWFsaWduOiBsZWZ0O1xufVxuLm14LXNlbGVjdGJveC1jYXJldC13cmFwcGVyIHtcbiAgICBmbG9hdDogcmlnaHQ7XG4gICAgaGVpZ2h0OiAxMDAlO1xufVxuIiwiLm14LWRlbW91c2Vyc3dpdGNoZXIge1xuICAgIHBvc2l0aW9uOiBmaXhlZDtcbiAgICByaWdodDogMDtcbiAgICB3aWR0aDogMzYwcHg7XG4gICAgaGVpZ2h0OiAxMDAlO1xuICAgIHotaW5kZXg6IDIwMDAwO1xuICAgIGJveC1zaGFkb3c6IC0xcHggMCA1cHggcmdiYSgyOCw1OSw4NiwuMik7XG59XG4ubXgtZGVtb3VzZXJzd2l0Y2hlci1jb250ZW50IHtcbiAgICBwYWRkaW5nOiA4MHB4IDQwcHggMjBweDtcbiAgICBoZWlnaHQ6IDEwMCU7XG4gICAgY29sb3I6ICMzODdlYTI7XG4gICAgZm9udC1zaXplOiAxNHB4O1xuICAgIG92ZXJmbG93OiBhdXRvO1xuICAgIGJhY2tncm91bmQ6IHVybChkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQU9nQUFBQmdDQVlBQUFBWFNqN05BQUFBR1hSRldIUlRiMlowZDJGeVpRQkJaRzlpWlNCSmJXRm5aVkpsWVdSNWNjbGxQQUFBQXlScFZGaDBXRTFNT21OdmJTNWhaRzlpWlM1NGJYQUFBQUFBQUR3L2VIQmhZMnRsZENCaVpXZHBiajBpNzd1L0lpQnBaRDBpVnpWTk1FMXdRMlZvYVVoNmNtVlRlazVVWTNwcll6bGtJajgrSUR4NE9uaHRjRzFsZEdFZ2VHMXNibk02ZUQwaVlXUnZZbVU2Ym5NNmJXVjBZUzhpSUhnNmVHMXdkR3M5SWtGa2IySmxJRmhOVUNCRGIzSmxJRFV1TXkxak1ERXhJRFkyTGpFME5UWTJNU3dnTWpBeE1pOHdNaTh3TmkweE5EbzFOam95TnlBZ0lDQWdJQ0FnSWo0Z1BISmtaanBTUkVZZ2VHMXNibk02Y21SbVBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHhPVGs1THpBeUx6SXlMWEprWmkxemVXNTBZWGd0Ym5NaklqNGdQSEprWmpwRVpYTmpjbWx3ZEdsdmJpQnlaR1k2WVdKdmRYUTlJaUlnZUcxc2JuTTZlRzF3UFNKb2RIUndPaTh2Ym5NdVlXUnZZbVV1WTI5dEwzaGhjQzh4TGpBdklpQjRiV3h1Y3pwNGJYQk5UVDBpYUhSMGNEb3ZMMjV6TG1Ga2IySmxMbU52YlM5NFlYQXZNUzR3TDIxdEx5SWdlRzFzYm5NNmMzUlNaV1k5SW1oMGRIQTZMeTl1Y3k1aFpHOWlaUzVqYjIwdmVHRndMekV1TUM5elZIbHdaUzlTWlhOdmRYSmpaVkpsWmlNaUlIaHRjRHBEY21WaGRHOXlWRzl2YkQwaVFXUnZZbVVnVUdodmRHOXphRzl3SUVOVE5pQW9UV0ZqYVc1MGIzTm9LU0lnZUcxd1RVMDZTVzV6ZEdGdVkyVkpSRDBpZUcxd0xtbHBaRG8wTXprd09UUkVNRFEyTkVZeE1VVTBRVFE0TVVJNU5UTkdNVVEzUXpFNU55SWdlRzF3VFUwNlJHOWpkVzFsYm5SSlJEMGllRzF3TG1ScFpEbzBNemt3T1RSRU1UUTJORVl4TVVVMFFUUTRNVUk1TlROR01VUTNRekU1TnlJK0lEeDRiWEJOVFRwRVpYSnBkbVZrUm5KdmJTQnpkRkpsWmpwcGJuTjBZVzVqWlVsRVBTSjRiWEF1YVdsa09qYzBSRU15TVVaR05EWTBRekV4UlRSQk5EZ3hRamsxTTBZeFJEZERNVGszSWlCemRGSmxaanBrYjJOMWJXVnVkRWxFUFNKNGJYQXVaR2xrT2pjMFJFTXlNakF3TkRZMFF6RXhSVFJCTkRneFFqazFNMFl4UkRkRE1UazNJaTgrSUR3dmNtUm1Pa1JsYzJOeWFYQjBhVzl1UGlBOEwzSmtaanBTUkVZK0lEd3ZlRHA0YlhCdFpYUmhQaUE4UDNod1lXTnJaWFFnWlc1a1BTSnlJajgrZzF0Umx3QUFFRkZKUkVGVWVOcnNuWWwzVmNVZHgyZHU4ckpESUpDd0NnalZhclZvc1ZYYzZqbldubnBJUWxKV2w2T0NyUFlma2gxY2l1d2xMRm81dFQzbFZKUlZFVVVFUlFRSlM0Q1FRRWpDUzk3MCs1Mlo5M0lUREd1Uzk4ajcvVGp6N3IyL2U5OTlaTzU4N205K003K1owY05YYnNxS2FUTmVLVlZvbEttT0tiWDM5RXNWS2wxRVY2MklLSzN3QjV1SGNZZy8zM3lDNHgybS9FMmpSRVNTTE1HSmw4dXZZcnNIaWR1aFNBK21Vd2FZaWhsUk0zSEdPdXp1Wlg0Zy9SbHBpdDY4TkZ1S2gwalNEWWd4emxBTVc3V3BDQmIwNlJqTmlEWUh6azZ2UEpaMm1iRnArYStKTEN4b0hyYm5vVnB0eW1lZGxXSWlrblJBS1VOWFZRMERvT01BcUlKMlg4MzB5cFBwQitteVFsL2xIWTNES0xaYlRmbnNMNldvaUNRZFVNcmdWVlZqQWVoSWFHTXhaWGFlbi83WGMybVpNWnVYVm1MenFGSTJmL1lCMm85TTJleW9GQm1ScEFKS0tWbTk4UkZvUndCUUZzZ2RnTFErVFNFZEIwQkxzWnNCUUd1d3Y4NlV6VGtqeFVZa3FZQlNpbGR2SEFkQWgyRzNDUloxUisyMFNRM3BDZW1TZ2RpVUFkQlJBTFFGKzl1UWRnTlVhZVVWU1I2Z2xBR3IvL0U0Tm9NQWFBTjgweDExMHlZMXBXMUdiVmxDdi9SMy92QVE5amVac3JsWHBBaUpkS2NFTnpqUDdoZFU3VlErMGhOOTFxeVBwR3RHd2Yrc3dvYmRNWmVRSGtENm05Nnk2SDRwUWlKSnM2RGVpa1pnUVIrSEJTMUNsYmZXYVBQWjVhbFRXdFBYa2k0dXNGVmVaUjV3Q3ZhZm1vOU42YnlyVXB4RWVoeFFTdjgxRzNJQUtDQTFoUUQwSFBaM1hVbGpTQjJvaTU3QjVua0FpbHFJdVlEOWpZRDB1QlFwa1I0SGxGSzRaa01lQUIwUFFQTUI2TmxXWlhZM1Q1MGFTM05JaXdIb2l3QjBqSEw5TWJ1UVBoRnJLdExqZ0ZMZ2crWUQwUEdnTWcrQW5zRjJUelROSWJXWnVIVWhxcnpxOS82dzFqWWdsYzcvVVlxWFNJOENTaWxZdTQ0VzlDa0F5bXJ2S2ZpbmUxdW5URE1DNmNJaDJQd0o2VmNBbFBteEY5YjFYMmJDL0NZcFppSTlCaWdsRDVDMnVyamRiQUJhRGRVK2dUUnNUWTJ6cHRxMitQNFRrSDRqT1NQU1k0QlNzdGV1TFFDZ1R3UFFMQnhXd3ovZFo2Wk1GMGd0cEF0S3NIa0JnTWE3WVk0QTJnL05oTGRxSlhkRWVnUlFTb1NRYXNQV3pBZ0FQVVZMQ2toamtxMCtjejljOEFRMlR5TDFVeTVzY2p2U0RvRGFLcmtqMHUyQVVqTFdyV0cvNEZNQWxPTW56K0NPZTh6a2x3VFNOa2laTHhNQTZDTmV4UzZaandEcEVja2RrVzRIMUVPYUQwQ2Z3bTRPN3NqeGs0UlVyRVE3VU4rK2p5OHlwSHU5Nmp1a2p3SHFCY2tka1c0RjFONW8zV3FHQTQ3SEhmT1VEUTgwdTgza2x3WFNhMEY5RnBzL0lQVlZkcnlwK3N4WGU2VzFWNlQ3QUUxQXFnMzlybndmWGJNTGtNb1l5bXNoemNYbUw4cU9ON1hDb1B2L0lPMEZxT0llaUhRUG9QYUc2MWZsT1F0aGFDSHE4QXM3emFSWG1pV3JmeEhVVWI3YUcyL3Q1Y0NFYmVLZmluUWJvQjdTSE44WDJCKy93SEdrbndOU0daclZPYWkveGVZeHBGRmU5Wk5peU9DRXR5UzJWd0R0bnE1THZmNkRMRnZvdE9HQVovaFhCcEMrZWtteS9JYitLV0V0OGFyRFNQOEdxS2NsZHdUUTdvQTBFNy9BUWM2RGZUL2dia0I2WHJMOXVwQnE1VUlHQ1dxaGNrSDRqRVQ2TDBDdGtSd1NRTHYrUnphczVOdytuRDRscG9MWUY2Ynl0V3JKK2h1Q0NqZEJ2YURhZ3ZBOXFCcWd6aGRRQmRDdWh2VHY3S2dmQVVENWd3Y0I2VkhKL3BzQ2xZMXR6M2tmMVQ0eWIxRzNBMVNaczFjQTdWSkl4d0xRa2Q0Z0hIV2d2aTd4dTdjRXFuNHNaRkhwbzM0S1VLVXhTUUR0b2gvYytONFFWMjJ6djN0S2FmV0ZxWGhkQWhwdUd0UUZCUFdQb2FvdnM1S0EvZy9waUNtZEx5ODhBZlNPSVdYd09BTWFzZ0RvUmV6dk1oVnZTRi9wcllIS1lJZW5rZTREb0lPOG1sWGVuVGo3bFNtZEp3RWlBdWlkUVBwdXZ2V3JORnNxRGNQY2RnTFNlbmtrdDVHWFd4YzhZMEZWeXJzUG1uM09YQXhxRjBDVnJpMEI5TFlocFFYbDhncTBBQzJLWTBvclpzak03YmNQS2h2aXhtSnZqRmZSZFRpbzJMMGxFNW9Kb0xmOW42aDZoMzJsdy8xVUlkOEMwaC9rMGR3SnFBdHBTVG5wK0VNaExhdS91NUVPbU5LNUVwZ3ZnTjR5cEhqekcxZEYwK29rOXZlYmlUT2w4ZWpPUUdXZ0EwZk9qTURSQ0srK0NwLzFBTFpmbXJLNUp5U1hCTkJiZ0hURllNVVJIbHBGQUdpZHJacE5uTmtvajZrcllGM0V5Q1NtKzFYaWtXdXVYTWVsRmZlYnNqbmlxd3FnTndWcEhnQmw1RkYvKzdaWFpvK1orS2FFQjNZZHFNVUE5RkZ2VmUveGFnNXhvMXZ4RlhTSFpKbEZBZlQ2LzZsTkt6SUJKZ3ZSRU8rWEhnU2tFbm5VMWZtOFpUR0h1VDNTd1ZkbEZmZ1FmVldrbzZaOHRyZ1pBbWhub0M1SDRURWp2RjlhYmYzUzhsa3Q4dGk2SEZUT216UlcyVVdoOUppMktqQUhrdXR2bFdzSlBvYThGMWdGMEk2UUxodGlDNDlXV1FDMHdmcWw1YlBFWCtvMldKZjBBNkQwVlVjck8zK1NqcDlxeFA1M09FZGdmMENOUmw2VUFtZ0MwbHlVRTFyVFltWDc5c3dCVkwya0JiSzc4MzN6RXVTMy9vMXlBOGtkcks2NHdFZlZkRGtZQzN6WVRKd3BMOHgwQnJTdHdDeWxYM3FQTHlYSFVWNitObVhpSS9WUTNoZmg4MEZrL1JoblhST1dsUS9qRkk2UFlJOE5UVCtiaWhreXIxSTZBdW9MQ254U3d5cFlnREp5R2Z0N1Rka2NDUkhzNlJxTjBteGdZdklOVEFucjJvejlZOHExQ2g4MUZXK2NreHhMSTBCOTFhdkErNlVEVUNyNHR2NEdrQjZUeDVrTVdKZHJWd1cyalV0czBCc1JzcTY4NGhMMFA5a2Fqd08zeGxTK0ppTnVlak9nb1FZTnh2SEcrL0k0Ync4NzNHVnR6bVErazZvVnVUNFdlTFNIZFdBb01JSWZET1Evb1dMQno2d09RMWN0c3o3MlVrQWRwSXM1bFFvYk1qaEZTQ09BWlFpYlZLdFNCdGgzKzNyTE9zcUhHN29KMFdKQi9BcldnR284cktkd0xWKzBaMlErNVY0Q3FJYzBSN2wrdkVIZUVUcUtsL1VoVXpwWEdwQlM3Vmx0ZkkvRERJY0QwT0hLTnZqcFVhR3pjVDgyNXNNUUFhcytBeDBEL1dzQ3BldlNiWm5MWGdGb0NOUnd3RDJiL3I4QXBIV0NSUW8vc3cwcmFVcUxMYlJLRHdXTWpNY2UxdWJISnFCbHErQlZEMm9OZEJmd3hRc1pTbk1GZ3d0WHBrNXBFa0R2Q2tnWGNRVEhRNjRCaVc5aXc3NjY3MDNwUEdtWXVGdWU0Zm9QTXF6dmFxZHIxU1dBa2RYaVlvRFp6NE5xb1NYWkdSN2tER01IcWRkQ1YwOUxpLzJMZ2RGczNlZHhQYTY2Y25aNjVWMFJYUEhraXUyWitMdnp0VkY5ZWgyZ2lZZThkWkdiUmRDOWZpOHFOaUNWenBQdW1MdFlNdGF0eWZLZ011Qy9DREFXQWRBaXhhM1JPUTVlRHpDM1JzY3RiOXdlTjBGM09YQWhqQTJFRnNlMHZFM2FUcTZ1bTNDdVVSdE4vemVLL1didGZPU3IwTVZDOTJvKzlPcUw3ZnA2SDM1L1c0RC9VN1pPL0xvT3NNMENaTmhxNkRsQ1MwZXd6Y1YxT2REeC81dURxN0d2OHFETGc0N1Yvd0p0MjFPMG5iK3gxd0xxSVVYVnlUeWc3QUs2ZHNRR1Y3cUdOWjB2SGVtOVRQcXNXYy9DM1E5UUZhTFFzeFpWQ1BnNHdWcGZIUGZWZGtFdmxVRm9BMTkxMWlHSTQ1K0JyVmJHd1ZZSnRQVzFzRnRkK0Y2MEJTRkE3ZFpDMW5hWDBIVWQ3aGZTYVJzdGh4ZUlVZlg2K2NXZjI3UEdmeG9kUDhKV3U3MlkxYnR6aVd2dE9XTkxmZnc2NC8vRmRIdy9acjhUaTkveG11KzA3Y2V2aVlYMEhmZGpmcjhWKzYzdDlQRy9NUDZ5TVNyeFZ6TmxYL2JXMU9wb1JiOVVMYmwxMTE3YnlYSGlDWVpmWnAzcE81N3JvTHZ6MTg2MUtuTVQxNFIxNWdiWG1jN3VwYS96M2M3T2RhSnZhOFc5d2JYdGZGQjFuU3F1dWdrTG1nTmRRVUNMcFRRdFZXN2dMRyt1dDFxd2FMQnVSc1BhcVlqZFY1cGZoU1hVR2FGNzBaSUhIUUJsOGJ3YUFyUlZXOHRMQkRRdE5NTWpvOVpTRzFwc1o3bHhkYU5tNzROUnNPaWFzZWFYdlRXM3hUa3pMVjZ2elFYN0FTbG5zMmZrQzZ0RXo2ck14dStSQjBkVU5FZGFldE5IbW55NmF5UkltMGNUemF0QitsVFppQmI3a3VNc2VNK3BTRk94bEZzUkFUUjFRTjJQengzS2RZNjdWY0V6bThhcHpPWnNLUTRpS2RlTzBwc2JpVzc0eDMrNGdGVmVocVRSNTRDUFlEalc4YmlaOEpaMHlZZ0lvQ2tDS1dkbzU0aU1JYjQxb2hicGEwQjZVWXFIaUFDYU9xQnlYbDVhMC9pYW5Cd1EvaTFBbGVCN0VRRTBkVUI5bXpHOUkrTWVLOUozaXZQeFNMVlhSQUJOR1VnNTN2UkJaVVBOckxEdjlLQ3NjQzBpZ0tZV3FFT1ZuWXZIOXAxU3pucFFaUTRlRVFFMGhVQmxueWtqa2ZLOGY4b1pBZzREVkJsb0xDS0FwZ2lrakxwNlNDVkNCcmthbS9vZTZVZUFLbE5RaWdpZ0tRSXFBN0RaZnpyRXEyaEZqOUNxQWxRSndoY1JRRk1FMUJMdm41WjRGY2Nqc3NYM3BMVDRpZ2lncVFNcUc1TFlMVFBRcXk1NVVFOExxQ0lDYU9xQVN0K1U4K3dNOEtwNlgvVTlKYUNLQ0tDcEErcG83NThXdFZsVWZkaUJPbDh5VzBRQVRSRlE2WjhPZGFEcWVOV1hyYjdWQUZVYWswUUUwTlFCVlE4SlZYMjVZdmdQeXFqanBuUytEQllYRVVCVEE5UUZJNzFGZFkxSmhxdUhxeCtaQUtwTTBpd2lnS1lJcUlSMEJBQ056K1JBSzNxQ3kvbVowbmtOa2tNaUFtZ3FaUHpXQlFSMGxFb0U1TnNaenhpTXozVTNhd0NyWkpLSUFKb0NvREl5NlY2L2JrbGNMbmxRVHdKVThWTUZVSkhrZzdxUXNiN3NvcUZsalhmUlJIMzE5eWRUT3ZleTVKSUFLcElhc0RMZ1liaUhWZmx1bXZOSXg3ajZseW1iSzkwMEFxaElDb0JhcU5xVzdYTmliSEErcDJNNUFWREZxZ3FnSXNrSGRaRmZ4Vm9OQnFBRFEyZHFQYXpWcG15T2ROVUlvQ0pKZjJCYkZ0RS92Y2Y1cWJyQXE5bVFkTnI3cStkTTJXeDVxQUtvU1BKaFhVdy9sZjJxZzBKYUxtMVFEVXQ3MHBUUGxxbERCVkNSRkFBMTExdFZWSC8xQU8rclVoajRjQkk2d0RwTC9GVUJWQ1Q1c0M3aFVvdkR1SDZtY3NzdXFsQ3cvaWttd0NycnBBcWdJa2wvdUp1WERGUnVPWG5DV2hBNjAyQmhOWW9ydnRXWmlXOUtaZ21nSXNtRmRTbGg5ZU5VN2NLMjhXb3cxNkxrZEtKbkZFTU1KODZVeUNVQlZDUzVzQzRyc3JBYU93U3VNTFNJTGdNZ3p1SDRETTZkTlJVenJraHVDYUFpeVN3QW01YWg2cXZaQ2x5c3dwRkxiWTFNTlRobUVQOTVVL0dHOUxVS29DTEpnM1U1NDRFQnF5N3gxalUzQWF4RDlxSUg5anlPYWszbDYxSWRGa0JGa2xZNHFsYjBkVmJWZHQyRSsxcUphOHdCcXhramZJSEpWTDRtRTNnTG9DTEpnZlVkcnNaTzMzV0FiUlZPaEJ3bS9GY1VwS0FlMk5aNlM0dXR2bXdtdlNLWko0Q0s5SGpCMmZndWdlM25yU3ZCTFFHZ3JwbXA3YXFvQTlWYTJqb2dYR2Ntdjl3b3VTZUFpdlE0c08vQmxBWjlBV2gvSFBiMzhCWjBxQlpUb2haV1oyWHJzVjhQZllPWk1sMkcwQW1nSWoxYXVEYXNqSVJnN1FjUTZkUG1ocXJGWVgvMkNtR0ZEV1pJNHFWQTZVc0VOenAxYWt3QUZSSHBxUUszL29Nc2ZIS2NLMU5mR3pSaFZKODRySUcvTG5EZ21zQUZValJrdUxWdkdqS01qWUpxZ0w2eGJ0cmtxQUFxSXRMZGhYRGRhbktaajcwK2dRdEp4RmIzSWJpQkJ6ZkRYd3RBUGNCVzN4SzRlWWFiQXFPNWJmUkFOMnUzNmx3ejlNMm5YNnE0SzYzdytCWGJBd0ZVSkdVbHNuYXRCbkE1QUM0L3d3S3M4Z0VvdDNtQnF5cEhFaGEzUGJpSlNqVDFnWnZiQ2RCcXprVWNoWTdIVVczWGVOVlJmNzVGRzgxdUl1T09OZThZWmZVYjMydnRjTytXUTYrKzJBNmNoOS9meHAvTTFDWitsZjNNME81ckVmd21WUkZ0VCtsTWZHVGFZNlBwQm1UaW9peXY1M0dXTWpwYjIvTUNxTWhkS29Wck5tUTZVRlV1QU1peFd3ZHVGZ3AzTm81em9NOEtQRnR4Yk9NdzZ3N1ZhdjFMa0p2UTkwSjYzY2tMb1FPZzdWNFV2NlR2N0Q0QWxQc3hBVlNrMTh2UVZWVzBTckJJT3N0YnM0aTNaaEZ2aGVQV2pEWHB3QjNyd0ZvNW83QzErakJFc0pUV0lvWjF4bG5oZG9DMmF0ZngxSUxmdEZ0M2JQVnhxMjJ0dWJmYVVhKy9Da0NiZDg3NFkvVC9BZ3dBMk1pN0hkQWUraWtBQUFBQVNVVk9SSzVDWUlJPSkgdG9wIHJpZ2h0IG5vLXJlcGVhdCAjMWIzMTQ5O1xuICAgIC8qIGJhY2tncm91bmQtYXR0YWNoZW1lbnQgbG9jYWwgaXMgbm90IHN1cHBvcnRlZCBvbiBJRThcbiAgICAgKiB3aGVuIHRoaXMgaXMgcGFydCBvZiBiYWNrZ3JvdW5kIHRoZSBjb21wbGV0ZSBiYWNrZ3JvdW5kIGlzIGlnbm9yZWQgKi9cbiAgICBiYWNrZ3JvdW5kLWF0dGFjaG1lbnQ6IGxvY2FsO1xufVxuLm14LWRlbW91c2Vyc3dpdGNoZXIgdWwge1xuICAgIHBhZGRpbmc6IDA7XG4gICAgbWFyZ2luLXRvcDogMjVweDtcbiAgICBsaXN0LXN0eWxlLXR5cGU6IG5vbmU7XG4gICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkICM0OTYwNzY7XG59XG4ubXgtZGVtb3VzZXJzd2l0Y2hlciBhIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBwYWRkaW5nOiAxMHB4IDA7XG4gICAgY29sb3I6ICMzODdlYTI7XG4gICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICM0OTYwNzY7XG59XG4ubXgtZGVtb3VzZXJzd2l0Y2hlciBoMiB7XG4gICAgbWFyZ2luOiAyMHB4IDAgNXB4O1xuICAgIGNvbG9yOiAjNWJjNGZlO1xuICAgIGZvbnQtc2l6ZTogMjhweDtcbn1cbi5teC1kZW1vdXNlcnN3aXRjaGVyIGgzIHtcbiAgICBtYXJnaW46IDAgMCAycHg7XG4gICAgY29sb3I6ICM1YmM0ZmU7XG4gICAgZm9udC1zaXplOiAxOHB4O1xuICAgIGZvbnQtd2VpZ2h0OiBub3JtYWw7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xufVxuLm14LWRlbW91c2Vyc3dpdGNoZXIgLmFjdGl2ZSBoMyB7XG4gICAgY29sb3I6ICMxMWVmZGI7XG59XG4ubXgtZGVtb3VzZXJzd2l0Y2hlciBwIHtcbiAgICBtYXJnaW4tYm90dG9tOiAwO1xufVxuLm14LWRlbW91c2Vyc3dpdGNoZXItdG9nZ2xlIHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgdG9wOiAyNSU7XG4gICAgbGVmdDogLTM1cHg7XG4gICAgd2lkdGg6IDM1cHg7XG4gICAgaGVpZ2h0OiAzOHB4O1xuICAgIG1hcmdpbi10b3A6IC00MHB4O1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICBib3JkZXItdG9wLWxlZnQtcmFkaXVzOiAzcHg7XG4gICAgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogM3B4O1xuICAgIGJveC1zaGFkb3c6IC0xcHggMCA1cHggcmdiYSgyOCw1OSw4NiwuMik7XG4gICAgYmFja2dyb3VuZDogdXJsKGRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQklBQUFBU0NBWUFBQUJXem81WEFBQUFHWFJGV0hSVGIyWjBkMkZ5WlFCQlpHOWlaU0JKYldGblpWSmxZV1I1Y2NsbFBBQUFBeVJwVkZoMFdFMU1PbU52YlM1aFpHOWlaUzU0YlhBQUFBQUFBRHcvZUhCaFkydGxkQ0JpWldkcGJqMGk3N3UvSWlCcFpEMGlWelZOTUUxd1EyVm9hVWg2Y21WVGVrNVVZM3ByWXpsa0lqOCtJRHg0T25odGNHMWxkR0VnZUcxc2JuTTZlRDBpWVdSdlltVTZibk02YldWMFlTOGlJSGc2ZUcxd2RHczlJa0ZrYjJKbElGaE5VQ0JEYjNKbElEVXVNeTFqTURFeElEWTJMakUwTlRZMk1Td2dNakF4TWk4d01pOHdOaTB4TkRvMU5qb3lOeUFnSUNBZ0lDQWdJajRnUEhKa1pqcFNSRVlnZUcxc2JuTTZjbVJtUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eE9UazVMekF5THpJeUxYSmtaaTF6ZVc1MFlYZ3Ribk1qSWo0Z1BISmtaanBFWlhOamNtbHdkR2x2YmlCeVpHWTZZV0p2ZFhROUlpSWdlRzFzYm5NNmVHMXdQU0pvZEhSd09pOHZibk11WVdSdlltVXVZMjl0TDNoaGNDOHhMakF2SWlCNGJXeHVjenA0YlhCTlRUMGlhSFIwY0RvdkwyNXpMbUZrYjJKbExtTnZiUzk0WVhBdk1TNHdMMjF0THlJZ2VHMXNibk02YzNSU1pXWTlJbWgwZEhBNkx5OXVjeTVoWkc5aVpTNWpiMjB2ZUdGd0x6RXVNQzl6Vkhsd1pTOVNaWE52ZFhKalpWSmxaaU1pSUhodGNEcERjbVZoZEc5eVZHOXZiRDBpUVdSdlltVWdVR2h2ZEc5emFHOXdJRU5UTmlBb1RXRmphVzUwYjNOb0tTSWdlRzF3VFUwNlNXNXpkR0Z1WTJWSlJEMGllRzF3TG1scFpEbzNORVJETWpGR1JEUTJORU14TVVVMFFUUTRNVUk1TlROR01VUTNRekU1TnlJZ2VHMXdUVTA2Ukc5amRXMWxiblJKUkQwaWVHMXdMbVJwWkRvM05FUkRNakZHUlRRMk5FTXhNVVUwUVRRNE1VSTVOVE5HTVVRM1F6RTVOeUkrSUR4NGJYQk5UVHBFWlhKcGRtVmtSbkp2YlNCemRGSmxaanBwYm5OMFlXNWpaVWxFUFNKNGJYQXVhV2xrT2pjMFJFTXlNVVpDTkRZMFF6RXhSVFJCTkRneFFqazFNMFl4UkRkRE1UazNJaUJ6ZEZKbFpqcGtiMk4xYldWdWRFbEVQU0o0YlhBdVpHbGtPamMwUkVNeU1VWkRORFkwUXpFeFJUUkJORGd4UWprMU0wWXhSRGRETVRrM0lpOCtJRHd2Y21SbU9rUmxjMk55YVhCMGFXOXVQaUE4TDNKa1pqcFNSRVkrSUR3dmVEcDRiWEJ0WlhSaFBpQThQM2h3WVdOclpYUWdaVzVrUFNKeUlqOCsxWm92TkFBQUFXZEpSRUZVZU5xTTFNMHJSRkVZeC9FN1k1cUlRcE9VYklpeW1RV3lzQmd2SlZKSzJWZ3J5WlF0S1NVTFplbFBzQjBMWmFOWmpKVU5LMUZza0pxVXZDUzNOQXNaYzN6UDlOemlPT2ZlZWVwVGM4L2M4K3ZjOHhaVFNubU9ha0VHS2R6Z0RCWFh5NTRPTXNTd2pwTDZXOWNZc3J4ZlpXdmNVdTd5MFZkTFVDYytWWGdkMm9MaXhwZk9JT21GMTdUdEhUT296WXV1cEN4QWFOQjlEVUVmZURVYkU4YnpFWHhaZXJQMDBsOGhoM0xVaUhUSU1yNk45ajJrc1lvaWh2LzFkZXlMU1Z6S0ttMWpFVytXZlpWMkxmOGdza2pJY3djV3BPTSsrcEhDRlBMb3NnV3RvQ3lkN2pDUE9qemhHSEhMeURQWTFhY2hhSmhEeFJqNnJCd0pYVXVvTjBJRzhJSXY3T2lHQmp4YWR2QUlUdVQzcmV4NmMwU2JLQVNmbG5VY0JUM0pUVGhBanlXa0dVVnNCRUVGUjVDZXJ6WHBOSWFjckZJckpuQ0JCM211QnZraEIxVFAyN2hNL0x2eDN6bDZneEhxdTZjNzRraVU4SXhHaktKZExyclQzeGZkandBREFKYU14UDJidkQyQkFBQUFBRWxGVGtTdVFtQ0MpIGNlbnRlciBjZW50ZXIgbm8tcmVwZWF0ICMxYjMxNDk7XG59XG4iLCIvKiBtYXN0ZXIgZGV0YWlscyBzY3JlZW4gZm9yIG1vYmlsZSAqL1xuLm14LW1hc3Rlci1kZXRhaWwtc2NyZWVuIHtcbiAgICB0b3A6IDA7XG4gICAgbGVmdDogMDtcbiAgICBvdmVyZmxvdzogYXV0bztcbiAgICB3aWR0aDogMTAwJTtcbiAgICBoZWlnaHQ6IDEwMCU7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIGJhY2tncm91bmQtY29sb3I6IHdoaXRlO1xuICAgIHdpbGwtY2hhbmdlOiB0cmFuc2Zvcm07XG59XG5cbi5teC1tYXN0ZXItZGV0YWlsLXNjcmVlbiAubXgtbWFzdGVyLWRldGFpbC1kZXRhaWxzIHtcbiAgICBwYWRkaW5nOiAxNXB4O1xufVxuXG4ubXgtbWFzdGVyLWRldGFpbC1zY3JlZW4taGVhZGVyIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgb3ZlcmZsb3c6IGF1dG87XG4gICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNjY2M7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogI2Y3ZjdmNztcbn1cblxuLm14LW1hc3Rlci1kZXRhaWwtc2NyZWVuLWhlYWRlci1jYXB0aW9uIHtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgZm9udC1zaXplOiAxN3B4O1xuICAgIGxpbmUtaGVpZ2h0OiAyNHB4O1xuICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG59XG5cbi5teC1tYXN0ZXItZGV0YWlsLXNjcmVlbi1oZWFkZXItY2xvc2Uge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICBsZWZ0OiAwO1xuICAgIHRvcDogMDtcbiAgICBoZWlnaHQ6IDEwMCU7XG4gICAgd2lkdGg6IDUwcHg7XG4gICAgYm9yZGVyOiBub25lO1xuICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuICAgIGNvbG9yOiAjMDA3YWZmO1xufVxuXG5ib2R5W2Rpcj1cInJ0bFwiXSAubXgtbWFzdGVyLWRldGFpbC1zY3JlZW4taGVhZGVyLWNsb3NlIHtcbiAgICByaWdodDogMDtcbiAgICBsZWZ0OiBhdXRvO1xufVxuXG4ubXgtbWFzdGVyLWRldGFpbC1zY3JlZW4taGVhZGVyLWNsb3NlOjpiZWZvcmUge1xuICAgIGNvbnRlbnQ6IFwiXFwyMDM5XCI7XG4gICAgZm9udC1zaXplOiA1MnB4O1xuICAgIGxpbmUtaGVpZ2h0OiAyNHB4O1xufVxuXG4vKiBjbGFzc2VzIGZvciBjb250ZW50IHBhZ2UgKi9cbi5teC1tYXN0ZXItZGV0YWlsLWNvbnRlbnQtZml4IHtcbiAgICBoZWlnaHQ6IDEwMHZoO1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG59XG5cbi5teC1tYXN0ZXItZGV0YWlsLWNvbnRlbnQtaGlkZGVuIHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTIwMCUpO1xufVxuXG5ib2R5W2Rpcj1cInJ0bFwiXSAubXgtbWFzdGVyLWRldGFpbC1jb250ZW50LWhpZGRlbiB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDIwMCUpO1xufSIsIi5yZXBvcnRpbmdSZXBvcnQge1xuICAgIHBhZGRpbmc6IDVweDtcbiAgICBib3JkZXI6IDFweCBzb2xpZCAjZGRkO1xuICAgIC13ZWJraXQtYm9yZGVyLXJhZGl1czogM3B4O1xuICAgIC1tb3otYm9yZGVyLXJhZGl1czogM3B4O1xuICAgIGJvcmRlci1yYWRpdXM6IDNweDtcbn1cbiIsIi5yZXBvcnRpbmdSZXBvcnRQYXJhbWV0ZXIgdGgge1xuICAgIHRleHQtYWxpZ246IHJpZ2h0O1xufVxuIiwiLnJlcG9ydGluZ0RhdGVSYW5nZSB0YWJsZSB7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgdGFibGUtbGF5b3V0OiBmaXhlZDtcbn1cbi5yZXBvcnRpbmdEYXRlUmFuZ2UgdGgge1xuICAgIHBhZGRpbmc6IDVweDtcbiAgICB0ZXh0LWFsaWduOiByaWdodDtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZWVlO1xufVxuLnJlcG9ydGluZ0RhdGVSYW5nZSB0ZCB7XG4gICAgcGFkZGluZzogNXB4O1xufVxuIiwiLm14LXJlcG9ydG1hdHJpeCB0YWJsZSB7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgbWF4LXdpZHRoOiAxMDAlO1xuICAgIHRhYmxlLWxheW91dDogZml4ZWQ7XG4gICAgbWFyZ2luLWJvdHRvbTogMDtcbn1cblxuLm14LXJlcG9ydG1hdHJpeCB0aCwgLm14LXJlcG9ydG1hdHJpeCB0ZCB7XG4gICAgcGFkZGluZzogOHB4O1xuICAgIGxpbmUtaGVpZ2h0OiAxLjQyODU3MTQzO1xuICAgIHZlcnRpY2FsLWFsaWduOiBib3R0b207XG4gICAgYm9yZGVyOiAxcHggc29saWQgI2RkZDtcbn1cblxuLm14LXJlcG9ydG1hdHJpeCB0Ym9keSB0cjpmaXJzdC1jaGlsZCB0ZCB7XG4gICAgYm9yZGVyLXRvcDogbm9uZTtcbn1cblxuLm14LXJlcG9ydG1hdHJpeCB0Ym9keSB0cjpudGgtY2hpbGQoMm4rMSkgdGQge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICNmOWY5Zjk7XG59XG5cbi5teC1yZXBvcnRtYXRyaXggdGJvZHkgaW1nIHtcbiAgICBtYXgtd2lkdGg6IDE2cHg7XG4gICAgbWF4LWhlaWdodDogMTZweDtcbn1cbiIsIi8qIFdBUk5JTkc6IElFOSBsaW1pdHMgbmVzdGVkIGltcG9ydHMgdG8gdGhyZWUgbGV2ZWxzIGRlZXA6IGh0dHA6Ly9qb3JnZWFsYmFsYWRlam8uY29tLzIwMTEvMDUvMjgvaW50ZXJuZXQtZXhwbG9yZXItbGltaXRzLW5lc3RlZC1pbXBvcnQtY3NzLXN0YXRlbWVudHMgKi9cblxuLyogZGlqaXQgYmFzZSAqL1xuXG4vKiBtZW5kaXggYmFzZSAqL1xuXG4vKiB3aWRnZXRzICovXG5cbi8qIHJlcG9ydGluZyAqL1xuIl0sInNvdXJjZVJvb3QiOiIifQ==*/
